官方documentation解释了如何装饰基于类的视图,但是我找不到有关如何向装饰器提供参数的任何信息。
我想实现像
这样的东西class MyView(View):
@method_decorator(mydecorator, some_parameters)
def dispatch(self, *args, **kwargs):
return super(MyView, self).dispatch(*args, **kwargs)
应该等同于
@mydecorator(some_parameters)
def my_view(request):
....
我如何处理此类案件?
答案 0 :(得分:17)
@method_decorator
将函数作为参数。如果要传递带参数的装饰器,只需:
@method_decorator
。在显式Python代码中,这将是:
decorator = mydecorator(arg1, arg2, arg...)
method_dec = method_decorator(decorator)
class MyClass(View):
@method_dec
def my_view(request):
...
所以,完全使用语法糖:
class MyClass(View):
@method_decorator(mydecorator(arg1, arg2, arg...))
def my_view(request):
...