【问题标题】:request.user for anonymous users or not in django?request.user 用于匿名用户还是不在 django 中?
【发布时间】:2020-07-16 02:00:42
【问题描述】:

我在 django 工作,对身份验证系统有疑问,request.user 也适用于匿名用户,或者它只适用于登录网站的用户。我读过很多文章,但只是想要一个明确的答案。另外我有一个自定义用户模型。

【问题讨论】:

    标签: html django-models django-forms django-views django-templates


    【解决方案1】:

    如果用户没有登录,那么request.user 将返回AnonymousUser object [Django-doc]。它是一个对象,例如.is_authenticatedFalse,主键.pkNone,等等。

    如果用户已登录,它将从您的AUTH_USER_MODEL 的模型中返回一个对象(默认情况下,这是User model [Django-doc])。

    这使得检查用户是否登录变得容易:

    def some_view(request):
        if request.user.is_authenticated:
            # …
        else:
            # …

    因此,如果用户未登录,这将不会引发错误。

    您可以使用 @login_required 装饰器限制登录用户的视图。如果用户未登录,这会将用户重定向到登录视图。

    【讨论】:

    • 我们可以将 AnonymousUser 对象保存在我们数据库的 ForeginKey 模型字段中吗??
    • @PrateekGupta:不,AnonymousUser 不是真正的模型。如果你打电话给.save(),那么它将引发NotImplementedError。因此,您不能在 ForeignKey 中使用它。
    • 那么有没有我们可以用来保存匿名用户的模态字段??
    • @PrateekGupta:不,在这种情况下通常只有一个商店None,因为没有特定的用户。
    • 好的,所以如果我在我的数据库中保存了一个匿名用户,并且如果该用户再次访问我的网站,那么 django 会识别该用户吗??我知道它很愚蠢,但我只是想清除我的怀疑
    猜你喜欢
    • 2014-12-02
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2015-06-22
    • 2018-01-21
    • 1970-01-01
    相关资源
    最近更新 更多