【Django博客网站】b站项目学习系列四:忘记密码界面

  1. 将 static 文件夹中的 forget_password.html 拖入 templates 文件夹中
  2. 定义视图:在 users 文件夹的 views.py 文件中加入:
    class ForgetPasswordView(View):
        def get(self, request):
            return render(request, 'forget_password.html')
    def post(self, request):
            mobile = request.POST.get('mobile')    # 接收参数
            password = request.POST.get('password')
            password2 = request.POST.get('password2')
            smscode = request.POST.get('sms_code')
            if not all([mobile, password, password2, smscode]):   # 判断参数是否齐全
                return HttpResponseBadRequest('缺少必传参数')
            if not re.match(r'^1[3-9]\d{9}$', mobile):    # 判断手机号是否合法
                return HttpResponseBadRequest('请输入正确的手机号码')
            if not re.match(r'^[0-9A-Za-z]{8,20}$', password):   # 判断密码是否是8-20个数字
                return HttpResponseBadRequest('请输入8-20位的密码')
            if password != password2:    # 判断两次密码是否一致
                return HttpResponseBadRequest('两次输入的密码不一致')
            redis_conn = get_redis_connection('default')   # 验证短信验证码
            sms_code_server = redis_conn.get('sms:%s' % mobile)
            if sms_code_server is None:
                return HttpResponseBadRequest('短信验证码已过期')
            if smscode != sms_code_server.decode():
                return HttpResponseBadRequest('短信验证码错误')
            try:    # 根据手机号查询数据
                user = User.objects.get(mobile=mobile)
            except User.DoesNotExist:
                try:   # 如果该手机号不存在,则注册个新用户
                   User.objects.create_user(username=mobile, mobile=mobile, password=password)
                except Exception:
                    return HttpResponseBadRequest('修改失败,请稍后再试')
            else:
                user.set_password(password)   # 修改用户密码
                user.save()
            response = redirect(reverse('users:login'))   # 跳转到登录页面
            return response
  3. 定义路由:在 users 文件夹的 urls.py 文件中加入:
    from users.views import ForgetPasswordView
        path('forgetpassword/', ForgetPasswordView.as_view(),name='forgetpassword'),
  4. 修改 templates 文件夹中 forget_password.html 文件的资源加载方式:
    在 <head> 补充和替换:
    在 <title>重设密码</title> 后加入:{% load staticfiles %}
    在 <!-- 引入bootstrap的css文件 --> 替换: "{% static 'bootstrap/css/bootstrap.min.css' %}"
    在 <!-- 引入vuejs --> 替换:"{% static 'js/vue-2.5.16.js' %}"、"{% static 'js/axios-0.18.0.min.js' %}"
    在 <!-- content --> 替换:
    在 <!-- 图片验证码部分 --> 替换:<img :src="image_code_url" @click="generate_image_code" alt="" style="width: 110px;height: 40px;">
    在 <!-- Footer部分 --> 替换:"{% static 'js/host.js' %}"、"{% static 'js/common.js' %}"、"{% static 'js/forget_password.js' %}"
  5. 修改 templates 文件夹中 login.html 文件的忘记密码的跳转连接:
    <small class="form-text text-muted ml-1"><a class="secondaryAction layui-text" href="{% url 'users:forgetpassword' %}">忘记密码?</a>
  6. 运行成功后的忘记密码界面如下:


 学习介绍链接:https://blog.csdn.net/castlegirl/article/details/135075747?spm=1001.2014.3001.5501

项目链接:GitHub - haifengyuhui/project_blogweb: Project: A website for haifengyuhui's blog

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值