当前位置:   article > 正文

一周学会Django5 Python Web开发 - Django5内置Auth认证系统-用户修改密码实现

一周学会Django5 Python Web开发 - Django5内置Auth认证系统-用户修改密码实现

锋哥原创的Python Web开发 Django5视频教程:

2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计59条视频,包括:2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~、第2讲 Django5安装、第3讲 Django5创建项目(用命令方式)等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV14Z421z78C/

用户修改密码主要通过request.user对象的set_password实现,当然校验原密码用check_password,设置完后,需要保存,调用save()方法。

我们urls.py里加下映射;

  1. # 修改密码 get请求直接跳转页面,post请求执行处理
  2.    path('auth/setPwd', helloWorld.views.setPwd),

新建setPwd.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <title>修改密码</title>
  6. </head>
  7. <body>
  8. <form action="/auth/setPwd" method="post">
  9.   {% csrf_token %}
  10.    <table>
  11.        <tr>
  12.            <th>修改密码</th>
  13.        </tr>
  14.        <tr>
  15.            <td>用户名:</td>
  16.            <td><input type="text" name="username" value="{{ request.user }}" readonly></td>
  17.        </tr>
  18.        <tr>
  19.            <td>原密码:</td>
  20.            <td><input type="password" name="oldPwd" value="{{ oldPwd }}"></td>
  21.        </tr>
  22.        <tr>
  23.            <td>新密码:</td>
  24.            <td><input type="password" name="newPwd" value="{{ newPwd }}"></td>
  25.        </tr>
  26.        <tr>
  27.            <td>
  28.                <input type="submit" value="提交">
  29.            </td>
  30.            <td>
  31.                <font color="red">{{ errorInfo }}</font>
  32.            </td>
  33.        </tr>
  34.    </table>
  35. </form>
  36. </body>
  37. </html>

views.py里实现setPwd函数:

  1. def setPwd(request):
  2.    """
  3.   修改密码
  4.   :param request:
  5.   :return:
  6.   """
  7.    if request.method == "POST":
  8.        oldPwd = request.POST.get("oldPwd")
  9.        newPwd = request.POST.get("newPwd")
  10.        # 1,校验用户密码 check_password
  11.        isRight = request.user.check_password(oldPwd)
  12.        if not isRight:
  13.            return render(request, 'auth/setPwd.html',
  14.                          context={"errorInfo": "原密码错误", "oldPwd": oldPwd, "newPwd": newPwd})
  15.        # 2,设置新密码 set_password 实现加密
  16.        request.user.set_password(newPwd)
  17.        # 3,保存用户信息
  18.        request.user.save()
  19.        return render(request, 'auth/index.html')
  20.    return render(request, "auth/setPwd.html")
我们测试下,先用户登录,然后浏览器输入: http://127.0.0.1:8000/auth/setPwd 进入修改密码页面;

如果原密码输入错误,提示报错信息

校验成功,跳转主页;

系统用户表的密码也会被修改,同时是加密的后的密码;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/704612
推荐阅读
相关标签
  

闽ICP备14008679号