我正在使用登录中间件来创建用户登录表单。
用户成功登录后,从视图中检索用户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))
答案 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))