- 将 static 文件夹中的 forget_password.html 拖入 templates 文件夹中
- 定义视图:在 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
- 定义路由:在 users 文件夹的 urls.py 文件中加入:
from users.views import ForgetPasswordView path('forgetpassword/', ForgetPasswordView.as_view(),name='forgetpassword'),
- 修改 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' %}"
- 修改 templates 文件夹中 login.html 文件的忘记密码的跳转连接:
<small class="form-text text-muted ml-1"><a class="secondaryAction layui-text" href="{% url 'users:forgetpassword' %}">忘记密码?</a>
- 运行成功后的忘记密码界面如下:
学习介绍链接:https://blog.csdn.net/castlegirl/article/details/135075747?spm=1001.2014.3001.5501
项目链接:GitHub - haifengyuhui/project_blogweb: Project: A website for haifengyuhui's blog