2011-05-12 2 views
0

나는 로그인 미들웨어를 사용하여 사용자 로그인 양식을 만듭니다.장고 검색 세션 사용자 ID

사용자가 성공적으로 로그인 한 후보기에서 사용자 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

아무 문제가 없지만, 내가 직면 한 문제는보기 또는 템플릿에서 로그인 한 후 사용자 ID를 검색하는 것입니다. – kelvinfix

답변

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)) 
+0

답변을 주셔서 감사합니다. 나는 그것을 시도 할 것이다. – kelvinfix

+0

그는 아마도 템플릿에 RequestContext를 전달해야 할 것입니다. –

+0

데이터베이스에서 데이터를 검색하려면 뷰에서 사용자 ID가 필요합니다. – kelvinfix