当前位置:   article > 正文

一周学会Django5 Python Web开发 - Django5内置Auth认证系统-用户注册实现

一周学会Django5 Python Web开发 - Django5内置Auth认证系统-用户注册实现

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

2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计57条视频,包括:2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~、第2讲 Django5安装、第3讲 Django5创建项目(用命令方式)等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV14Z421z78C/我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。

Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点。它内置了强大的用户认证系统--auth,可以实现上述需求。它默认使用 auth_user 表来存储用户数据。

前面我们已经通过数据迁移生成了用户权限认证系统的物流表;里面包含系统用户表,权限表,用户组,以及用户组权限关联表,用户和组关联表,用户权限关联表。

我们实现Auth认证系统里的用户注册的话,用的是auth模版models.py里定义的User模型。

通过auth内置的User,我们可以直接操作用户相关功能;

首先urls.py里定义下映射:

  1. # 跳转注册页面
  2.    path('auth/toRegister', helloWorld.views.to_register),
  3.    # 提交注册请求
  4.    path('auth/register', helloWorld.views.register),
 

templates下新建auth目录,再新建login.html和register.html两个页面;(用户注册后,跳转到登录页面)

register.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/register" 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="{{ username }}"></td>
  17.        </tr>
  18.        <tr>
  19.            <td>密码:</td>
  20.            <td><input type="password" name="password" value="{{ password }}"></td>
  21.        </tr>
  22.        <tr>
  23.            <td>
  24.                <input type="submit" value="提交">
  25.            </td>
  26.            <td>
  27.                <font color="red">{{ errorInfo }}</font>
  28.            </td>
  29.        </tr>
  30.    </table>
  31. </form>
  32. </body>
  33. </html>

login.html页面源码(临时的):

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <title>Title</title>
  6. </head>
  7. <body>
  8. 登录页面
  9. </body>
  10. </html>

views.py实现to_register和register两个方法。新增用户用的是create_user,判断用户是否存在通过filter

  1. def to_register(request):
  2.    """
  3.   跳转注册页面
  4.   :param request:
  5.   :return:
  6.   """
  7.    return render(request, 'auth/register.html')
  8. def register(request):
  9.    """
  10.   用户注册
  11.   :param request:
  12.   :return:
  13.   """
  14.    username = request.POST.get('username')
  15.    password = request.POST.get('password')
  16.    # 检验用户名是否存在
  17.    result = User.objects.filter(username=username)
  18.    if result:
  19.        return render(request, 'auth/register.html',
  20.                      context={"errorInfo": "该用户名已存在", "username": username, "password": password})
  21.    User.objects.create_user(username=username, password=password)
  22.    return render(request, "auth/login.html")

测试,浏览器输入 http://127.0.0.1:8000/auth/toRegister

输入用户名和密码,点提交;

auth_user表,就会有用户数据:

如果用户名重复,则报错提示:

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

闽ICP备14008679号