Reputation: 1684
The official documentation explains how to decorate a class based view, however I could not find any information on how to provide parameters to the decorator.
I would like to achieve something like
class MyView(View):
@method_decorator(mydecorator, some_parameters)
def dispatch(self, *args, **kwargs):
return super(MyView, self).dispatch(*args, **kwargs)
which should be equivalent to
@mydecorator(some_parameters)
def my_view(request):
....
How do I deal with such cases?
Upvotes: 22
Views: 6098
Reputation: 12333
@method_decorator
takes a function as parameter. If you want to pass a decorator with parameters, you only need to:
@method_decorator
.In explicit Python code this would be:
decorator = mydecorator(arg1, arg2, arg...)
method_dec = method_decorator(decorator)
class MyClass(View):
@method_dec
def my_view(request):
...
So, using the syntactic sugar completely:
class MyClass(View):
@method_decorator(mydecorator(arg1, arg2, arg...))
def my_view(request):
...
Upvotes: 30