应用自定义装饰器在Django视图中调度?

时间:2016-04-07 13:47:20

标签: python django django-views

我在这里写过装饰器是代码。

def is_envlocked(func):
    def is_lockedwrapper(self):
        username = "tejesh.s"
        env_id = self.object.env_id
        env = Capacity.models.Env.objects.get(id=env_id)
        if env.user == username:
            return True
        else:
           return reverse('envapps', kwargs={'envid':self.object.env.id})
   return is_lockedwrapper

class EnvappsCreate(CreateView):
    model = Capacity.models.Envapps
    fields=['appname','VM_Image','functional_count','flavor']
    template_name = 'envapps_create_form.html'
    @method_decorator(login_required)
    def dispatch(self, request,envid):
     return super(EnvappsCreate, self).dispatch(request)

但是想把这个装饰器添加到调度方法我该怎么做?

1 个答案:

答案 0 :(得分:1)

这包括in the docs。您可以执行以下操作之一:

decorators = [login_required, is_envlocked]
@method_decorator(decorators)
def dispatch(self, request, envid):

或多次使用method_decorator()

@method_decorator(login_required)
@method_decorator(is_envlocked)
def dispatch(self, request, envid):
相关问题