【发布时间】:2020-07-16 02:00:42
【问题描述】:
我在 django 工作,对身份验证系统有疑问,request.user 也适用于匿名用户,或者它只适用于登录网站的用户。我读过很多文章,但只是想要一个明确的答案。另外我有一个自定义用户模型。
【问题讨论】:
标签: html django-models django-forms django-views django-templates
我在 django 工作,对身份验证系统有疑问,request.user 也适用于匿名用户,或者它只适用于登录网站的用户。我读过很多文章,但只是想要一个明确的答案。另外我有一个自定义用户模型。
【问题讨论】:
标签: html django-models django-forms django-views django-templates
如果用户没有登录,那么request.user 将返回AnonymousUser object [Django-doc]。它是一个对象,例如.is_authenticated 是False,主键.pk 是None,等等。
如果用户已登录,它将从您的AUTH_USER_MODEL 的模型中返回一个对象(默认情况下,这是User model [Django-doc])。
这使得检查用户是否登录变得容易:
def some_view(request):
if request.user.is_authenticated:
# …
else:
# …
因此,如果用户未登录,这将不会引发错误。
您可以使用 @login_required 装饰器限制登录用户的视图。如果用户未登录,这会将用户重定向到登录视图。
【讨论】:
AnonymousUser 不是真正的模型。如果你打电话给.save(),那么它将引发NotImplementedError。因此,您不能在 ForeignKey 中使用它。
None,因为没有特定的用户。