Django检索会话用户标识
问题描述:
我正在使用登录中间件创建用户登录表单。Django检索会话用户标识
用户成功登录后,从视图中检索用户标识的最佳方法是什么?
创建一个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))
答
一旦用户登录,他们的相关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))
等等,正常的auth中间件又出了什么问题? – 2011-05-12 15:33:18
它没有错,我面对的问题是从视图或模板登录后检索用户ID。 – kelvinfix 2011-05-13 00:27:42