자신 만의 login_required
데코레이터를 만들고 장식 된 것으로 표시해야합니다. 아마도 가장 좋은 장소는 func_dict
입니다.
이제
from django.contrib.auth.decorators import login_required as django_l_r
# Here you're defining your own decorator called `login_required`
# it uses Django's built in `login_required` decorator
def login_required(func):
decorated_func = django_l_r(func)
decorated_func.func_dict['login_is_required'] = True
return decorated_func
@login_required # Your decorator
def authenticatedd_view(request):
pass
def unauthenticated_view(request):
pass
당신이보기를 다음과 같이 꾸며졌다 있는지 확인할 수 있습니다 ...
# Assume `a_view` is view function
>>> a_view.func_dict.get('login_is_required',False)
파이썬 데코레이터에 대해 혼란스러워하는 경우
이 SO 질문/대답을 참조하십시오 How to make a chain of function decorators?
"장식 된 것으로 기능을 표시 하시겠습니까?" 로그 아웃시 리디렉션 할 적절한 URL 이름을 각 기능에 표시하지 않는 이유는 무엇입니까? 그것은보다 직접적으로 유용 할 것입니다. –
@ S.Lott보기 기능에 URL 또는 URL 이름을 첨부한다는 의미 인 것처럼 들리지만, 장고에서 명시 적으로 분리 된 URL과보기가 섞여서 좋지 않을 것으로 생각됩니다. –
@Chris W .: URL 이름은 'reverse()'가 작동하도록보기에서 참조됩니다. 마찬가지로 URL 이름은 템플릿에서 참조되므로 {{% url %}}이 (가) 작동합니다. 나는 당신이 "믹싱 (mixing)"을 의미하는지 모르겠습니다. 더 설명해 주시겠습니까? –