需要帮助理解 Django 身份验证代码

时间:2021-06-10 14:27:01

标签: python django

来自 views.py 的代码:

from django.contrib.auth.decorators import login_required 

@login_required
def index(request):
    user = request.user 
    posts = Post.objects.filter(user=user) 

我无法理解内联 @login_required。为什么要使用这个装饰器?

那么user = request.user呢?在这个项目中,我们没有创建一个名为 user 的模型。

请给我解释一下。非常感谢!

2 个答案:

答案 0 :(得分:0)

<块引用>

在这段代码中我无法理解内联@login_required 为什么我们要使用装饰器

@login_required 装饰器完全符合它所说的:它要求用户在访问与此视图关联的路由时登录。

<块引用>

而 user=request.user 用户 ??在这个项目中,我们没有创建名为 user 的模型。

Django 为您定义了一个 User 模型。

有关默认身份验证和授权系统的更多详细信息,read the documentation。谷歌搜索诸如“django login_required”之类的信息会提供大量信息。

答案 1 :(得分:0)

这个功能背后的逻辑是为了实现只有登录的用户才能访问自己写的帖子:所有http请求都包含用户的id:如果他没有登录,他就被识别为匿名的,否则作为用户。 要获取他的身份,您可以调用 request.user,然后将其传递给查询以调用他的帖子。 所以 : 匿名用户和其他用户都无法访问第三个用户的完整帖子列表。