Django检索会话用户ID

时间:2011-05-12 15:26:18

标签: django django-sessions

我正在使用登录中间件来创建用户登录表单。

用户成功登录后,从视图中检索用户ID的最佳方法是什么?

创建了一个middleware.py:

class LoginMiddleware(object):
    def process_request(self, request):
        if request.path != self.require_login_path and request.user.is_anonymous():
            if request.POST:
                return login(request)
            else:
                return HttpResponseRedirect('%s?next=%s' % (self.require_login_path, request.path))

1 个答案:

答案 0 :(得分:5)

用户登录后,会自动通过模板中的User提供关联的request.user对象。当您说“用户ID”时,我不确定您是指用户名还是数据库中id的字面值。但是,同样的方法适用于两者:{{ request.user.username }}{{ request.user.id }}

此外,正如上面提到的评论者所说,除非您需要更改登录的处理方式,否则没有理由创建新的身份验证中间件。否则,请不要管它并使用默认值。 (这似乎是你应该根据你的中间件做的事情)。

更新:忽略提及为了访问模板中的request.user,您必须传入RequestContext。示例render_to_response如下:

from django.template import RequestContext

render_to_response('templates/mytemplate.html', {}, context_instance=RequestContext(request))