赞
踩
锋哥原创的Python Web开发 Django5视频教程:
2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计57条视频,包括:2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~、第2讲 Django5安装、第3讲 Django5创建项目(用命令方式)等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV14Z421z78C/我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。
Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点。它内置了强大的用户认证系统--auth,可以实现上述需求。它默认使用 auth_user 表来存储用户数据。
前面我们已经通过数据迁移生成了用户权限认证系统的物流表;里面包含系统用户表,权限表,用户组,以及用户组权限关联表,用户和组关联表,用户权限关联表。
我们实现Auth认证系统里的用户注册的话,用的是auth模版models.py里定义的User模型。
通过auth内置的User,我们可以直接操作用户相关功能;
首先urls.py里定义下映射:
- # 跳转注册页面
- path('auth/toRegister', helloWorld.views.to_register),
- # 提交注册请求
- path('auth/register', helloWorld.views.register),
templates下新建auth目录,再新建login.html和register.html两个页面;(用户注册后,跳转到登录页面)
register.html页面源码:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>注册页面</title>
- </head>
- <body>
- <form action="/auth/register" method="post">
- {% csrf_token %}
- <table>
- <tr>
- <th>用户注册</th>
- </tr>
- <tr>
- <td>用户名:</td>
- <td><input type="text" name="username" value="{{ username }}"></td>
- </tr>
- <tr>
- <td>密码:</td>
- <td><input type="password" name="password" value="{{ password }}"></td>
- </tr>
- <tr>
- <td>
- <input type="submit" value="提交">
- </td>
- <td>
- <font color="red">{{ errorInfo }}</font>
- </td>
- </tr>
- </table>
- </form>
- </body>
- </html>
login.html页面源码(临时的):
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- 登录页面
- </body>
- </html>
views.py实现to_register和register两个方法。新增用户用的是create_user,判断用户是否存在通过filter
- def to_register(request):
- """
- 跳转注册页面
- :param request:
- :return:
- """
- return render(request, 'auth/register.html')
-
-
- def register(request):
- """
- 用户注册
- :param request:
- :return:
- """
- username = request.POST.get('username')
- password = request.POST.get('password')
- # 检验用户名是否存在
- result = User.objects.filter(username=username)
- if result:
- return render(request, 'auth/register.html',
- context={"errorInfo": "该用户名已存在", "username": username, "password": password})
- User.objects.create_user(username=username, password=password)
- return render(request, "auth/login.html")
测试,浏览器输入 http://127.0.0.1:8000/auth/toRegister
输入用户名和密码,点提交;
auth_user表,就会有用户数据:
如果用户名重复,则报错提示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。