여기에 표시된 장식 자 method_decorator
은 docs에 사용할 수 있습니다.
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
from django.views.generic import TemplateView
class ProtectedView(TemplateView):
template_name = 'secret.html'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(ProtectedView, self).dispatch(*args, **kwargs)
또는 당신이 당신의 urls.py에서 작업을 수행 할 수 있습니다 :
이
from django.conf.urls import patterns
from django.contrib.auth.decorators import login_required
from myapp.views import MyView
urlpatterns = patterns('',
(r'^about/', login_required(MyView.as_view())),
)
업데이트 :
장고 1.9로, 지금 방법을 사용할 수있는 워드 프로세서
클래스 수준의 장식 자. 데코 레이팅 할 메소드의 이름을 전달해야합니다. 따라서 데코레이터를 적용하기 위해 디스패치를 재정의 할 필요가 없습니다.
예 :
@method_decorator(login_required, name='dispatch')
class ProtectedView(TemplateView):
template_name = 'secret.html'
또한, 당신은 장식의 목록 또는 튜플을 정의하고 대신 method_decorator()
여러 번 호출하는이를 사용할 수 있습니다.
예 (아래 두 개의 클래스가 동일) :
decorators = [never_cache, login_required]
@method_decorator(decorators, name='dispatch')
class ProtectedView(TemplateView):
template_name = 'secret.html'
@method_decorator(never_cache, name='dispatch')
@method_decorator(login_required, name='dispatch')
class ProtectedView(TemplateView):
template_name = 'secret.html'
은 (login_required)이'@method_decorator은'유일한 방법은 모든 IT의 기본 기능을 절약 파견 내 장식을 추가 할 것입니까? – micgeronimo
네, 기본 기능이 무슨 뜻인지 오해하고있는 경우를 제외하고는 그렇습니다. – schillingt