第19章 · 用户账户

项目3 Web应用第2阶段:让用户输入数据、创建用户账户、实现登录注册与用户数据管理。

知识点 代码示例 章节测验(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)