2015-02-06 1 views
0

특정보기 만 프로세서를 통과하도록하고 싶습니다. 예를 들어, 내 의견의 약 절반에 대해 사용자 지정 인증 방법을 실행하려고합니다. 사용자가 인증되지 않으면 새 페이지로 리디렉션됩니다. 장고에서 이런 식으로 할 수있는 좋은 방법은 무엇입니까?Django에는 특정보기에 대해서만 컨텍스트 프로세서가있는 방법이 있습니까?

+0

등록 페이지로 이동 하시겠습니까? 또는 그냥 정상적인 페이지? – cdvv7788

답변

4

컨텍스트 프로세서가 필요한 것은 아닙니다. 컨텍스트 프로세서 (이름에서 알 수 있듯이)는 템플릿을 렌더링 할 때 추가 컨텍스트를 주입합니다.

원하는 것은보기가 실행되기 전에 (따라서 모든 템플릿이 렌더링되기 전에) 리디렉션됩니다.

이것은 middleware으로 얻을 수 있지만, 미들웨어는 에 모두 유용합니다. 사용자의 의견은입니다.

귀하의 경우에는 a decorator으로 작성하고 해당보기로 장식해야합니다. 특히 user_passes_test :

from django.contrib.auth.decorators import user_passes_test 

def my_auth_check(user): 
    # Do something 
    if all_good(user): 
     return True 
    return False 

@user_passes_test(my_auth_check) 
def my_view(request): 
    # stuff 

@user_passes_test(my_auth_check) 
def my_other_view(request): 
    # stuff 
관련 문제