2015-01-19 3 views
0

함수 기반 뷰에서는 staff_member_required가 설립되었지만 클래스 메소드에서는 찾지 못했습니다. 글쎄, 난 내 클래스 기반 뷰의 장식을 작성하려고 해요 : Django에서 클래스 메소드 용 데코레이터 만들기

TypeError at /en-us/user/userdata/7/ get() takes exactly 3 arguments (2 given)

내가 그것을 어떻게 해결할 수 :
from django.contrib.admin.views.decorators import staff_member_required 
from django.views.generic import View 

def cls_method_staff_member_decorator(func): 
    def wrapper(self, request, *args, **kwargs): 
     return staff_member_required(view_func=func)(request, *args, **kwargs) 
    return wrapper 

class SetUserData(View): 
    http_method_names = ['get', ] 

    @cls_method_staff_member_decorator 
    def get(self, request, user_id): 
     # ... some actions with data 

그러나 오류 복용의 runserver 명령을 통해 서버를 시작한 후

?

답변

0

method_decorator을 사용하여 dispatch 메서드를 장식해야합니다.

urlpatterns = patterns('', 
    ... 
    (r'^your_url/', cls_method_staff_member_decorator(SetUserData.as_view())), 
    ... 
) 
:

class SetUserData(View): 
    @method_decorator(cls_method_staff_member_decorator) 
    def dispatch(self, *args, **kwargs): 
     return super(SetUserData, self).dispatch(*args, **kwargs) 

는 또한 urls에 장식 here를 설명

관련 문제