如何在单个基于类的视图中修饰不同的http方法

yej*_*xin 7 django django-class-based-views

例如,我有一个基于类的视图,它允许GET和POST方法,如下所示,

class ViewOne(View):
    def post(self, request, *args, **kwargs):
        ...
    def get(self, request, *args, **kwargs):
        ...
    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
        return super(ViewOne, self).dispatch(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

现在,GET和POST都是login_required.但是,如果我只想要POST为login_required怎么办?

def*_*fuz 4

嗯……是不是不行了?

class ViewOne(View):
    @method_decorator(login_required)
    def post(self, request, *args, **kwargs):
        ...
    def get(self, request, *args, **kwargs):
        ...    
Run Code Online (Sandbox Code Playgroud)