Django如何知道用户是谁?

时间:2015-03-17 15:13:50

标签: django request session-variables

根据Django documentation,如果Django安装已激活AuthenticationMiddleware,则HttpRequest对象具有“user”属性,表示当前登录的用户。请求对象如何知道用户是什么?中间件是否将用户设置为cookie并在用户登录后将该cookie保存到客户端浏览器?在我的代码中,我将用户的ID(从auth_user表)保存到会话变量后,我们通常会在每个页面上检查它。如果请求对象中始终提供此信息,则不需要执行此操作。我需要做的就是检查request.user.id。这是对的吗?

感谢。

2 个答案:

答案 0 :(得分:0)

用户ID不存储在cookie中,而是存储在会话中。

是的,您不应该自己在会话中保存这些数据:

if request.user.is_authenticated():
    user_id = request.user.id

如果该视图仅适用于已记录的用户,则可以使用@login_required装饰器而不是检查request.user.is_authenticated()

答案 1 :(得分:0)

是的,除了用户数据存储在会话中之外,你已经得到了它。你通过自己跟踪所有这些来做你多余的工作 - 这是Django擅长的事情! 查看this documentation on user objects ..和this article on all of it specifically