Django博客系统(忘记密码)
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博客系统(忘记密码)相关推荐
- Django博客系统注册(定义用户模型类)
1. Django默认用户认证系统 Django自带用户认证系统 它处理用户账号.组.权限以及基于cookie的用户会话. Django认证系统位置 django.contrib.auth包含认证框架 ...
- Django博客系统项目需求分析
项目需求分析 需求分析原因 项目中,需求驱动开发.即开发人员需要以需求为目标来实现业务逻辑. 需求分析方式 企业中,借助产品原型图分析需求. 需求分析完后,前端按照产品原型图开发前端页面,后端开发对应 ...
- Django博客系统(详情评论数据展示)
1. 查询评论数据并展示 1.查询评论数据并通过context传递给HTML from home.models import Comment from django.shortcuts import ...
- Django博客系统(详情页面展示)
1. 页面展示 1.在home.views.py文件中定义视图 from django.views import Viewclass DetailView(View):def get(self,req ...
- Django博客系统(首页文章数据展示)
1. 查询分页数据并展示 1.查询分类文章数据并通过context传递给HTML from home.models import ArticleCategory,Article from django ...
- Django博客系统(首页分类数据展示)
1. 首页接口设计 1.请求方式 选项 方案 请求方法 GET 请求地址 /?cat_id=xxx&page_num=xxx&page_size=xxx 2.请求参数 参数名 类型 是 ...
- Django博客系统(推荐文章数据展示)
1. 添加文章浏览量数据 1.每次请求文章详情时给浏览量+1 try:article=Article.objects.get(id=id) except Article.DoesNotExist:re ...
- Django博客系统(博客保存)
1. 博客保存接口设计 1.请求方式 选项 方案 请求方法 POST 请求地址 /writeblog/ 2.请求参数:表单 参数名 类型 是否必传 说明 title string 是 标题 avata ...
- Django博客系统(写博客页面展示分类)
1. 查询数据并展示 1.查询分类文章数据并通过context传递给HTML from home.models import ArticleCategory class WriteBlogView(L ...
最新文章
- 我如何将Google I / O 2018的兴奋带给尼日利亚沃里的115个人
- [转]URLRewriter使用通配符
- 538B. Quasi Binary
- git pull ---rebase
- python字典练习_python字典练习
- mysql外键 菜鸟教程_MySQL 菜鸟入门“秘籍”
- 【考研攻略】北京交通大学网络空间安全专业2018-2022年考研数据分析
- ccxprocess用不用自启_你电脑上开机自启的软件都有哪些?
- win10怎么添加打印机
- linux 程序网速监控软件,Linux实时网速监控软件ifstat简易教程
- JVM中的本地内存追踪NMT(Native Memory Tracking)
- Cepton宣布与美国底特律顶级汽车制造商合作,赢得业内最大ADAS激光雷达量产订单
- linux centos 访问根目录 not accessable
- win7电脑蓝屏没有修复计算机,win7电脑蓝屏怎么办
- python搭建qt开发环境_QT开发环境搭建(Windows)
- python的pymysql模块安装与使用
- web前端入门到实战:纯HTML做出几个实用网页效果
- Django项目之打分系统
- 大数据在企业中的重要性
- 记录:C#编程打印菱形图案