1. 忘记密码页面展示

1.在users.views.py文件中定义视图

from django.views import Viewclass ForgetPasswordView(View):def get(self, request):return render(request, 'forget_password.html')

2.在users.urls.py文件中定义路由

from users.views import ForgetPasswordView
urlpatterns = [# 参数1:路由# 参数2:视图函数# 参数3:路由名,方便通过reverse来获取路由path('forgetpassword/', ForgetPasswordView.as_view(),name='forgetpassword'),
]

3.修改forget_password.html中的资源加载方式

    <!-- Header部分 -->{% load staticfiles %}<!-- 引入bootstrap的css文件 --><link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}"><!-- 引入vuejs --><script type="text/javascript" src="{% static 'js/vue-2.5.16.js' %}"></script><script type="text/javascript" src="{% static 'js/axios-0.18.0.min.js' %}"></script>...<!-- Footer部分 --><script type="text/javascript" src="{% static 'js/host.js' %}"></script><script type="text/javascript" src="{% static 'js/common.js' %}"></script><script type="text/javascript" src="{% static 'js/forget_password.js' %}"></script>...<!-- 图片验证码部分 --><img :src="data:image_code_url" @click="generate_image_code" alt="" style="width: 110px;height: 40px;">

4.修改login.html中的忘记密码的跳转连接

<small class="form-text text-muted ml-1"><a class="secondaryAction layui-text" href="{% url 'users:forgetpassword' %}">忘记密码?</a>

2. 忘记密码接口设计

1.请求方式

选项 方案
请求方法 POST
请求地址 /forgetpassword/

2.请求参数:表单

参数名 类型 是否必传 说明
mobile string 用户名
password string 密码
password2 string 确认密码
sms_code string 短信验证码

3.响应结果:HTML

字段 说明
修改失败 响应错误提示
修改成功 重定向到登录

3. 忘记密码接口实现

class ForgetPasswordView(View):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('请输入正确的手机号码')# 判断密码是否是8-20个数字if not re.match(r'^[0-9A-Za-z]{8,20}$', password):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

运行效果:

 

Django博客系统(忘记密码)相关推荐

  1. Django博客系统注册(定义用户模型类)

    1. Django默认用户认证系统 Django自带用户认证系统 它处理用户账号.组.权限以及基于cookie的用户会话. Django认证系统位置 django.contrib.auth包含认证框架 ...

  2. Django博客系统项目需求分析

    项目需求分析 需求分析原因 项目中,需求驱动开发.即开发人员需要以需求为目标来实现业务逻辑. 需求分析方式 企业中,借助产品原型图分析需求. 需求分析完后,前端按照产品原型图开发前端页面,后端开发对应 ...

  3. Django博客系统(详情评论数据展示)

    1. 查询评论数据并展示 1.查询评论数据并通过context传递给HTML from home.models import Comment from django.shortcuts import ...

  4. Django博客系统(详情页面展示)

    1. 页面展示 1.在home.views.py文件中定义视图 from django.views import Viewclass DetailView(View):def get(self,req ...

  5. Django博客系统(首页文章数据展示)

    1. 查询分页数据并展示 1.查询分类文章数据并通过context传递给HTML from home.models import ArticleCategory,Article from django ...

  6. Django博客系统(首页分类数据展示)

    1. 首页接口设计 1.请求方式 选项 方案 请求方法 GET 请求地址 /?cat_id=xxx&page_num=xxx&page_size=xxx 2.请求参数 参数名 类型 是 ...

  7. Django博客系统(推荐文章数据展示)

    1. 添加文章浏览量数据 1.每次请求文章详情时给浏览量+1 try:article=Article.objects.get(id=id) except Article.DoesNotExist:re ...

  8. Django博客系统(博客保存)

    1. 博客保存接口设计 1.请求方式 选项 方案 请求方法 POST 请求地址 /writeblog/ 2.请求参数:表单 参数名 类型 是否必传 说明 title string 是 标题 avata ...

  9. Django博客系统(写博客页面展示分类)

    1. 查询数据并展示 1.查询分类文章数据并通过context传递给HTML from home.models import ArticleCategory class WriteBlogView(L ...

最新文章

  1. 我如何将Google I / O 2018的兴奋带给尼日利亚沃里的115个人
  2. [转]URLRewriter使用通配符
  3. 538B. Quasi Binary
  4. git pull ---rebase
  5. python字典练习_python字典练习
  6. mysql外键 菜鸟教程_MySQL 菜鸟入门“秘籍”
  7. 【考研攻略】北京交通大学网络空间安全专业2018-2022年考研数据分析
  8. ccxprocess用不用自启_你电脑上开机自启的软件都有哪些?
  9. win10怎么添加打印机
  10. linux 程序网速监控软件,Linux实时网速监控软件ifstat简易教程
  11. JVM中的本地内存追踪NMT(Native Memory Tracking)
  12. Cepton宣布与美国底特律顶级汽车制造商合作,赢得业内最大ADAS激光雷达量产订单
  13. linux centos 访问根目录 not accessable
  14. win7电脑蓝屏没有修复计算机,win7电脑蓝屏怎么办
  15. python搭建qt开发环境_QT开发环境搭建(Windows)
  16. python的pymysql模块安装与使用
  17. web前端入门到实战:纯HTML做出几个实用网页效果
  18. Django项目之打分系统
  19. 大数据在企业中的重要性
  20. 记录:C#编程打印菱形图案

热门文章

  1. Java架构技术文档:并发编程+设计模式+常用框架+JVM+精选视频
  2. 最低售价17999元,华为发布新一代折叠屏手机Mate X2,将首批升级HarmonyOS
  3. CSDN湘苗培优|火热报名中
  4. 洞察疫情,微软推出新冠数据分析网站COVID Insights
  5. 强化学习70年演进:从精确动态规划到基于模型
  6. 西湖龙井也上链?是的,以后你喝什么茶我都知道!
  7. 通俗易懂:图卷积神经网络入门详解
  8. 20分钟教你搞懂Git!
  9. AI黑科技:呵护地球,我们是认真的
  10. 月入5W,月花销不足2K的程序员,可免费获得AI女友一名