修改密码

使用forms表单验证方式:

forms.py

class ChangePasswordForm(forms.Form):old_password = forms.CharField(max_length=20, min_length=8, required=True, error_messages={"max_length": "用户长度最长为20", "min_length": "用户名最少长度为8", "required": "密码必填"})new_password = forms.CharField(max_length=20, min_length=8, required=True, error_messages={"max_length": "用户长度最长为20", "min_length": "用户名最少长度为8", "required": "密码必填"})new_password2 = forms.CharField(max_length=20, min_length=8, required=True, error_messages={"max_length": "用户长度最长为20", "min_length": "用户名最少长度为8", "required": "密码必填"})def clean(self):cleaned_data = super().clean()old_password = cleaned_data.get('old_password')new_password = cleaned_data.get('new_password')new_password2 = cleaned_data.get('new_password2')if old_password == new_password:raise forms.ValidationError('新旧密码不允许相同')if new_password != new_password2:raise forms.ValidationError('两次密码输入不一致')return cleaned_data

views.py

class ChangePasswordView(View):"""修改密码"""def get(self, request):'''展示修改密码界面'''return render(request, 'user_center_pass.html')def post(self, request):'''实现修改密码逻辑'''# 接收参数ChangePassword_form = ChangePasswordForm(request.POST)if ChangePassword_form.is_valid():old_password = ChangePassword_form.cleaned_data.get('old_password')new_password = ChangePassword_form.cleaned_data.get('new_password')new_password2 = ChangePassword_form.cleaned_data.get('new_password2')# 校验参数if not all([old_password, new_password, new_password2]):return http.HttpResponseForbidden('缺少必传参数')try:result = request.user.check_password(old_password)if not result:return render(request, 'user_center_pass.html', {'origin_password_errmsg': '原始密码错误'})except Exception as e:logger.error(e)return render(request, 'user_center_pass.html', {'origin_password_errmsg': '原始密码错误'})if not re.match(r'^[0-9A-Za-z]{8,20}$', new_password):return http.HttpResponseForbidden('密码最少8位,最多20位')if new_password != new_password2:return http.HttpResponseForbidden('两次输入的密码不一致')# 修改秘密try:request.user.set_password(new_password)request.user.save()except Exception as e:logger.error(e)return render(request, 'user_center_pass.html', {'change_pwd_errmsg': '修改密码失败'})# 清理状态保持信息logout(request)response = redirect(reverse('users:login'))response.delete_cookie('username')# 响应密码修改结果:重定向到登录界面return response

不使用forms表单验证方式:POST.get

class ChangePasswordView(LoginRequiredMixin, View):"""修改密码"""def get(self, request):"""展示修改密码界面"""return render(request, 'user_center_pass.html')def post(self, request):"""实现修改密码逻辑"""# 接收参数old_password = request.POST.get('old_password')new_password = request.POST.get('new_password')new_password2 = request.POST.get('new_password2')# 校验参数if not all([old_password, new_password, new_password2]):return http.HttpResponseForbidden('缺少必传参数')try:result = request.user.check_password(old_password)if not result:return render(request, 'user_center_pass.html', {'origin_password_errmsg': '原始密码错误'})except Exception as e:logger.error(e)return render(request, 'user_center_pass.html', {'origin_pwd_errmsg':'原始密码错误'})if not re.match(r'^[0-9A-Za-z]{8,20}$', new_password):return http.HttpResponseForbidden('密码最少8位,最长20位')if new_password != new_password2:return http.HttpResponseForbidden('两次输入的密码不一致')# 修改密码try:request.user.set_password(new_password)request.user.save()except Exception as e:logger.error(e)return render(request, 'user_center_pass.html', {'change_pwd_errmsg': '修改密码失败'})# 清理状态保持信息logout(request)response = redirect(reverse('users:login'))response.delete_cookie('username')# # 响应密码修改结果:重定向到登录界面return response

Python-修改密码功能相关推荐

  1. BOS项目(SSH)04_02_修改密码功能-easyui的表单验证、表单检验 easyUI实现表单验证、如果加密的密码忘记了怎么办

    系列文章目录 文章目录 系列文章目录 前言 修改密码功能-easyui的表单检验 如果加密的密码忘记了怎么办 总结 前言 这些是easyUI帮我们做好的,我们只需要在easyUI里面声明好一些属性即可 ...

  2. 为svn服务增加自助修改密码功能

    为svn服务增加自助修改密码功能   在维护svn服务的过程中,为用户创建了帐号密码,因svn服务原本没有提供修改密码的功能,所以用户如果觉得自己的密码不合适,要修改,则必须通过svn管理员进行修改. ...

  3. python修改密码业务_Python: 修改LDAP密码

    一个简单的用Python修改LDAP密码的程序,测试通过 1. 首先要安装Python的LDAP包,在Ubuntu下面是: apt-get install python-ldap 2. 例子代码: i ...

  4. C# 开发dynamics crm修改密码功能

    asp.net站点实现,话不多说,先上核心代码, 简单界面如下如所示: <%@ Page Title="Home Page" Language="C#" ...

  5. springBoot加layui和mybatis后台管理系统增删改查分页登录注销修改密码功能

    超市订单管理系统 1 登录页面 1.1 登录 点击提交按钮提交form表单使用post请求把(String name, String password)数据传到后台loginController 路径 ...

  6. 使用Springboot修改密码功能

    本文承接上文使用SpringBoot进行加密登录注册功能的实现 修改密码:根据id修改user_name和pwd xml文件 <!--修改密码--><update id=" ...

  7. 网上图书商城项目学习笔记-008修改密码功能

    一.修改密码流程分析 二.代码 1.view层 1)pwd.jsp 1 <%@ page language="java" import="java.util.*&q ...

  8. loopback修改密码功能(去掉邮箱验证了)

    本人自写接口,为了过滤掉loopback中登录是需要的eamil验证 正常的验证都是用邮箱来验证的,而且loopback自带的加密 Account.hashPassword(options.passw ...

  9. php修改密码功能md5,php – 更改密码哈希类型的最有效方法(md5到sha1)

    您无法将md5转换为sha,但实际上您的用户在登录时只使用密码,因此您可以稍微修改脚本以自动执行更新 // The user is not authticated yet $auth = false; ...

  10. Qt连接mysql数据库、数据库开启远程连接,实现QQ登录、注册、修改密码功能(已实现),后续继续更新中...

    视频示例:如下直通车 Qt连接数据库 个人博客直达 一.安装Mysql数据库软件 1.下载安装连接:点击连接 2.解压,打开如下 3.设置环境变量 4.修改添加环境变量 5.新建配置文件my.ini( ...

最新文章

  1. oracle中ci是什么意思,enq: CI - contention(附AWR)
  2. .net面试题大全,绝大部分面试题(有答案)
  3. python随机生成字符串_如何随机生成大写字母和数字组成的字符串
  4. OJ1004: 三位数的数位分离
  5. 【leetcode dp】629. K Inverse Pairs Array
  6. 为什么不能在scrollview中直接添加一个image,然后使animation.begin()??
  7. 关于如何查看 EntityValidationErrors 详细信息的解决方法
  8. UVA10049 Self-describing Sequence【数列】
  9. java for while do-while 循环的经典题
  10. hadoop2.7.3+hbase1.2.5配合起来使用的一个小问题,备注一下
  11. python代理IP的使用
  12. 面试中遇到的java笔试题
  13. 传说中的世界500强面试题-数学能力(2)
  14. 目标检测 3—— 人脸检测
  15. 优化三维空间定位法及C语言快捷实现
  16. 对网上一些Java笔试题的总结,答案与自我理解(400道)
  17. ubuntu16.04 安装hustoj 最新【亲测,附带常见问题解决】
  18. 【MFC】打砖块小游戏(下)(7)
  19. 机器人扫地机什么牌子好?
  20. Neo4j入门之中国电影票房排行浅析

热门文章

  1. fastAPI使用mongoDB
  2. java远程连接linux并发送命令,两种方案比较Jsch与ganymed-ssh2
  3. python的plt绘制子图_Matplotlib 多子图绘制
  4. 深入拆解类加载器,这样的姿势你还不懂吗?
  5. Python基础之占位符
  6. C语言实现贪吃蛇小游戏(详解)
  7. AsyncTask 用法
  8. Linux查看CUDA版本以及nvcc: command not found
  9. 【学习资料】中国开放大学-电大-《教育学》形考作业答案(2018).docx
  10. S32K144 CAN收发调试经验总结