2014-05-21 1 views
0

아래와 같이 settings.py 파일에 사용자 정의 미들웨어가 설치되어 있습니다. 내 질문은 사용자가 로그인 할 때만이 미들웨어를 호출 할 수있는 방법입니다. 사용자가 로그인 한 경우에만 custom middleware get_username에서 내 try/catch 블록을 제거 할 수 있습니다.이 문제점에 대해 알아 보려면 어떻게해야합니까?Django는 사용자가 로그인 한 경우에만 사용자 정의 미들웨어를 호출합니다.

미들웨어는 요청 또는 응답이 처리 될 때마다 실행된다

class get_username(object): 
    def process_request(self, request): 
    try: 
     userprofile.objects.get(request.id) 
     .... 
     .... 
     request.session['display_name'] = display_name 
     request.session.save() 
    except: 
     pass 

답변

1

settings.py

MIDDLEWARE_CLASSES = (
    .... 
    .... 
    'custom.api.get_username' 
) 

INSTALLED_APPS = (
    .... 
    'custom', 

)

맞춤/api.py. 조건부로 실행할 수는 없습니다. 즉, 미들웨어 클래스에 process_request, process_response 등의 메소드가있는 경우 항상 호출됩니다. 이 같은

시도 뭔가 :

class get_username(object): 

    def process_request(self, request): 
     if request.user.is_authenticated(): 
      # ... 
      request.session['display_name'] = display_name 
      request.session.save() 
관련 문제