修改密码的整体布局
urls.py
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r\'^admin/\', admin.site.urls),
url(r\'^register/\', views.register),
url(r\'^login/\',views.login),
url(r\'^get_code/\',views.get_code),
url(r\'^home/\',views.home),
url(r\'^logout/\',views.logout),
url(r\'^set_password/\',views.set_password),
修改密码页面
set_password.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="/static/bootstrap-3.3.7/css/bootstrap.min.css">
<script src="/static/bootstrap-3.3.7/js/bootstrap.min.js"></script>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h2 class="text-center">修改密码</h2>
<form action="" method="post">
{% csrf_token %}
<div class="form-group">
<label for="id_username">用户名</label>
{#不可修改,修改密码的用户名显示在修改页 #}
<input type="text" name="username" id="id_username" class="form-control" disabled
value="{{ request.user.username }}">
</div>
<div class="form-group">
<label for="id_old_password">旧密码</label>
<input type="password" name="old_password" id="id_old_password" class="form-control">
</div>
<div class="form-group">
<label for="id_new_password">新密码</label>
<input type="password" name="new_password" id="id_new_password" class="form-control">
</div>
<div class="form-group">
<label for="id_confirm_password">确认密码</label>
<input type="password" name="confirm_password" id="id_confirm_password" class="form-control">
</div>
<button class="btn btn-primary" id="id_button">修改数据</button>
{#错误消息的提示#}
<span class="error" style="color: red" id="id_error"></span>
</form>
</div>
</div>
</div>
</body>
</html>
修改密码代码
views.py
def set_password(request):
old_password = request.POST.get(\'old_password\')
new_password = request.POST.get(\'now_password\')
confirm_password = request.POST.get(\'confirm_password\')
# 判断旧密码是否正确
res = request.user.check_password(old_password)
if res:
# 判断新密码两次验证是否正确
if new_password == confirm_password:
# 修改密码
request.user.set_password(new_password)
# 保存
request.user.save()
return redirect(\'/login/\')
return render(request, \'set_password.html\')