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.系统网卡文件路径 / ...
随机推荐
- js软键盘
<<!DOCTYPE html><html><head> <title></title></head><body& ...
- 认识JS的基础对象,定义对象的方法
JS的基础对象: 1.window //窗口对象 2.document //文档对象 3.document.documentElement //html对象 4.docume ...
- HDU 1054 Hungary
Strategic Game Problem Description Bob enjoys playing computer games, especially strategic games, bu ...
- RFC1867 HTTP file upload
RFC1867 HTTP file upload RFC1867 is the standard definition of that "Browse..." button tha ...
- Android媒体解码MediaCodec MediaExtractor学习
Android提供了MediaPlayer播放器播放媒体文件,其实MediaPlyer只是对Android Media包下的MediaCodec和MediaExtractor进行了包装,方便使用.但是 ...
- word中选择嵌入式时图片被遮住,只显示小部分的解决方法
选中图片,点击如下 选择 行距选项 将行距改为单位行距即可.
- 图像局部显著性—点特征(GLOH)
基于古老的Marr视觉理论,视觉识别和场景重建的基础即第一阶段为局部显著性探测.探测到的主要特征为直觉上可刺激底层视觉的局部显著性--特征点.特征线.特征块. 相关介绍:局部特征显著性-点特征(SIF ...
- SQL基本概述
DBMS的种类: 层次数据库HDB 面向对象数据库OODB XML数据库XMLDB 键值存储系统KVS 关系数据库RDB RDBMS(关系数据库管理系统),主要5有种: Oracle Database ...
- uni-app的专属强大自适应单位upx,但是这个这是一个大坑,不能动态赋值解决办法
uni-app 使用 upx 作为默认尺寸单位, upx 是相对于基准宽度的单位,可以根据屏幕宽度进行自适应.uni-app 规定屏幕基准宽度750upx. 开发者可以通过设计稿基准宽度计算页面元素 ...
- 使用.Net Core RT 标准动态库
这个文档可以引导你如何通过CoreRT生成一个原生标准的系统动态库让其他编程语言调用. CoreRT 可以构建静态库, 这些库可以在编译时链接或者也可以构建运行时所需的共享库, 创建一个支持CoreR ...