DJANGO里让用户自助修改密码
参考了网上的实现,最终实现的各代码如下:
changepwd.html模板文件:
{% extends "Prism/index.html" %} {% load staticfiles %} {% block title %} 修改密码 {% endblock %} {% block heading %} {% endblock %} {% block content %} <div class="tm-middle"> <div class="uk-container uk-container-center"> <h3 class="tm-article-subtitle uk-margin-top"> 修改密码 </h3> <hr class="uk-grid-divider"> <div class="uk-panel uk-panel-box uk-container-center uk-width-1-3"> <h3 class="uk-panel-title"><i class="uk-icon-user"></i>修改密码</h3> <div class="uk-grid"> <div > {% if changepwd_success %} <div class="uk-alert">密码更改成功,请用新的密码登陆!</div> {% endif%} <form class="uk-form uk-form-horizontal uk-margin-top" action="" method="post"> {% csrf_token %} <div class="uk-form-row"> <div class="uk-form-label"> {{ form.oldpassword.label_tag }} {% for error in form.oldpassword.errors %} <span class="uk-badge uk-badge-danger">{{ error }}</span> {% endfor %} {% if oldpassword_is_wrong %} <span class="uk-badge uk-badge-danger"> 原密码不正确 </span> {% endif %} </div> <div class="uk-form-control"> {{ form.oldpassword }} </div> </div> <div class="uk-form-row"> <div class="uk-form-label"> {{ form.newpassword1.label_tag }} {% for error in form.newpassword1.errors %} <span class="uk-badge uk-badge-danger">{{ error }}</span> {% endfor %} </div> <div class="uk-form-control"> {{ form.newpassword1 }} </div> </div> <div class="uk-form-row"> <div class="uk-form-label"> {{ form.newpassword2.label_tag }} {% for error in form.newpassword2.errors %} <span class="uk-badge uk-badge-danger">{{ error }}</span> {% endfor %} </div> <div class="uk-form-control"> {{ form.newpassword2 }} </div> </div> <div class="uk-form-row"> <input type="submit" value="确认修改" class="uk-button uk-button-primary"> </div> </form> </div> </div> </div> </div> </div> {% endblock %}
Forms.py表单文件:
class ChangepwdForm(forms.Form): oldpassword = forms.CharField( required=True, label=u"原密码", error_messages={'required': u'请输入原密码'}, widget=forms.PasswordInput( attrs={ 'placeholder': u"原密码", 'rows': 1, } ), ) newpassword1 = forms.CharField( required=True, label=u"新密码", error_messages={'required': u'请输入新密码'}, widget=forms.PasswordInput( attrs={ 'placeholder': u"新密码", 'rows': 1, } ), ) newpassword2 = forms.CharField( required=True, label=u"确认密码", error_messages={'required': u'请再次输入新密码'}, widget=forms.PasswordInput( attrs={ 'placeholder': u"确认密码", 'rows': 1, } ), ) def clean(self): if not self.is_valid(): raise forms.ValidationError(u"所有项都为必填项") elif self.cleaned_data['newpassword1'] <> self.cleaned_data['newpassword2']: raise forms.ValidationError(u"两次输入的新密码不一样") else: cleaned_data = super(ChangepwdForm, self).clean() return cleaned_data
VIEWS.PY文件:
def changepwd(request): if request.method == 'GET': form = ChangepwdForm() return render_to_response('changepwd.html', RequestContext(request, {'form': form, })) else: form = ChangepwdForm(request.POST) if form.is_valid(): username = request.user.username oldpassword = request.POST.get('oldpassword', '') user = authenticate(username=username, password=oldpassword) if user is not None and user.is_active: newpassword = request.POST.get('newpassword1', '') user.set_password(newpassword) user.save() return render_to_response('changepwd.html', RequestContext(request, {'changepwd_success': True})) else: return render_to_response('changepwd.html', RequestContext(request, {'form': form, 'oldpassword_is_wrong': True})) else: return render_to_response('changepwd.html', RequestContext(request, {'form': form, }))
urls.py
url(r'^accounts/changepwd/$', login_required(changepwd), name="changepwd"), url(r'^accounts/changeemail/$', login_required(changeemail), name="changeemail"),
最后就当当当当~~~~~~~~
DJANGO里让用户自助修改密码的更多相关文章
- DJANGO里让用户自助修改邮箱地址
因为在部署过程中会涉及用户邮件发送,如果有的同事不愿意收到太多邮件,则可以自己定义为不存在的邮箱. 我们在注册的时候,也不会写用户邮箱地址,那么他们也可以在这里自己更改. changeemail.ht ...
- Ubuntu Server忘记密码后,单用户模式修改密码进去不了桌面的无奈
俗话说的好,好记性不如烂笔头.有时候脑子一热,就想不起来之前设置过的密码是什么了.我可怜地忘了我的Ubuntu Server的密码,回忆了n种组合都不行,于是只能进行单用户模式的修改密码了. 以下的操 ...
- linux 查看用户上次修改密码的日期【转】
1.找到以下文件: cat /etc/shadow 第三段字符就是最近一次密码修改的天数,此数字是距离1970年1月1日的天数. 2.用以下命令计算: date -u -d "1970- ...
- linux添加用户、修改密码
1.在root下添加用户用 adduser 命令 # 添加用户 admin [root@flm] #sudo adduser admin 2.添加用户登录密码 # 为用户 admin 修改密码 [ro ...
- 记一次CentOS7进单用户模式修改密码的失败经历(faild to load SELinux policy freezing)
背景:Cent SO7.4root用户密码忘记,根据https://www.linuxidc.com/Linux/2016-08/134034.htm提供的放法修改完密码之后系统启动后一直停留在转圈的 ...
- Ubuntu 18.04 进入单用户模式修改密码
Ubuntu 18.04 使用单用户模式修改密码 操作步骤 启动Ubuntu 18.04 ,长按 Shift 键(有的可能按 Esc 键:绝大多数按 Shift 键)进入单用户视图,选中 Ubuntu ...
- Linux目录终章,单用户模式修改密码、环境变量、第三方软件安装
目录 今日内容概要 内容详细 解析映射文件 磁盘挂载文件 开机加载脚本 系统启动级别 使用单用户模式修改密码 变量加载文件 登录提示信息 第三方软件安装目录(编译安装目录) 系统日志目录 保存系统运行 ...
- linux单用户模式修改密码与系统启动级别
目录 一:系统启动级别 二:单用户模式修改密码 一:系统启动级别 系统启动级别: 0 关机 1 单用户模式(无法通过xshell方式使用)(虚拟机操作)(系统云服务商后台) 2 多用户无网络模式 3 ...
- 5、Linux基础--etc(文件系统)、启动模式、单用户模式修改密码、安装目录、日志目录、状态目录
笔记 1.晨考 1.存放系统配置文件的目录 /etc 2.存储系统实时运行状态的目录 /proc 3.存储系统硬件接口的目录 /dev 4.查看系统挂载情况的命令 df -h 5.系统网卡文件路径 / ...
随机推荐
- 使用匿名类型做为ComboBox的DataSource
使用匿名类型做为ComboBox的DataSource ArrayList list = new ArrayList(); list.Add(new { id = " ...
- java 语法 —— final
final 成员变量的初始化问题: 1. 实现特别的约束和限制 指向一个 static 型私有成员(仅调用一次), public class Coffee { private static long ...
- 【BZOJ 1590】 Secret Message
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1590 [算法] 字典树 [代码] #include<bits/stdc++.h ...
- ubuntu 软件桌面图标创建
sublime text 的安装目录是:/usr/local/sublimetext $cd 桌面 $vim Sublime\ Text.desktop 添加如下内容: [Desktop Entry] ...
- 企业级分布式监控系统--zabbix
目录 1.Zabbix简介 2.zabbix安装 3.工作原理 4.监控功能 5.监控系统架构 6.Zabbix系统架构 7.Zabbix组件构成 8.zabbix监控环境中基本概念 正文 回到顶部 ...
- 带"签名"的请求接口实现
废话少说,直接上代码(⊙﹏⊙) class Program { //签名证书 public static X509Certificate2 cerSigneCert; private static c ...
- 【java基础】(6)内部类
内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑.肢体.器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液.跳动) 显然, ...
- WEB笔记-3、盒子模型+定位+显示
3.1 盒子模型 边距控制 margin/padding:上 右 下 左: padding:内容和边距之间的空间 margin:”盒子“外撑开的空间,两个相邻标签外边距会出现重叠和累加的现象, ...
- CDC之fast->slow (1)
Sampling slower signals into faster clock domains causes fewer potential problems than sampling fast ...
- Assembly之instruction之MOV
MOV[.W] Move source to destinationMOV.B Move source to destination Syntax MOV src,dst or M ...