赞
踩
锋哥原创的Python Web开发 Django5视频教程:
用户修改密码主要通过request.user对象的set_password实现,当然校验原密码用check_password,设置完后,需要保存,调用save()方法。
我们urls.py里加下映射;
- # 修改密码 get请求直接跳转页面,post请求执行处理
- path('auth/setPwd', helloWorld.views.setPwd),
新建setPwd.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>修改密码</title>
- </head>
- <body>
- <form action="/auth/setPwd" method="post">
- {% csrf_token %}
- <table>
- <tr>
- <th>修改密码</th>
- </tr>
- <tr>
- <td>用户名:</td>
- <td><input type="text" name="username" value="{{ request.user }}" readonly></td>
- </tr>
- <tr>
- <td>原密码:</td>
- <td><input type="password" name="oldPwd" value="{{ oldPwd }}"></td>
- </tr>
- <tr>
- <td>新密码:</td>
- <td><input type="password" name="newPwd" value="{{ newPwd }}"></td>
- </tr>
- <tr>
- <td>
- <input type="submit" value="提交">
- </td>
- <td>
- <font color="red">{{ errorInfo }}</font>
- </td>
- </tr>
- </table>
- </form>
- </body>
- </html>
views.py里实现setPwd函数:
- def setPwd(request):
- """
- 修改密码
- :param request:
- :return:
- """
- if request.method == "POST":
- oldPwd = request.POST.get("oldPwd")
- newPwd = request.POST.get("newPwd")
- # 1,校验用户密码 check_password
- isRight = request.user.check_password(oldPwd)
- if not isRight:
- return render(request, 'auth/setPwd.html',
- context={"errorInfo": "原密码错误", "oldPwd": oldPwd, "newPwd": newPwd})
- # 2,设置新密码 set_password 实现加密
- request.user.set_password(newPwd)
- # 3,保存用户信息
- request.user.save()
- return render(request, 'auth/index.html')
- return render(request, "auth/setPwd.html")
我们测试下,先用户登录,然后浏览器输入: http://127.0.0.1:8000/auth/setPwd
进入修改密码页面;
如果原密码输入错误,提示报错信息
校验成功,跳转主页;
系统用户表的密码也会被修改,同时是加密的后的密码;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。