锋哥原创的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表,就会有用户数据:
如果用户名重复,则报错提示: