第19章 · 用户账户
项目3 Web应用第2阶段:让用户输入数据、创建用户账户、实现登录注册与用户数据管理。
知识点讲解
用户账户与登录注册
Django提供了完善的用户认证系统。使用内置的 User 模型实现注册、登录、注销:注册表单校验用户名和密码,登录通过 authenticate() 和 login() 完成,@login_required 装饰器保护需要登录才能访问的页面。
让用户拥有自己的数据
多用户系统中,每条数据都应关联创建它的用户。在模型中加入外键 ForeignKey(User),创建数据时自动填充当前登录用户;查询时用 filter(user=request.user) 只显示自己的数据,并校验用户是否有权修改或删除。
代码示例
Django用户认证
演示注册登录与数据归属。
from django.contrib.auth import authenticate, login
from django.contrib.auth.decorators import login_required
@login_required
def my_topics(request):
# 只显示当前用户的数据
topics = Topic.objects.filter(owner=request.user).order_by("date_added")
return render(request, "topics.html", {"topics": topics})
# 注册
user = User.objects.create_user(username=form.cleaned_data["username"],
password=form.cleaned_data["password1"])
login(request, user)