Как обернуть пользовательские конечные точки в Django Tastypie?
Я хочу добавить метод dispatch к некоторому ресурсу, чтобы я мог использовать декоратор-обертку на нем. Проблема в том, что он работает только на CRUD-операциях и не переходит в метод отправки на "оригинальных" конечных точках:
class SomeResource(SomeBaseResource):
class Meta(...): ...
def get_something_extra(self, request, **kwargs):
...
def patch_detail(self, request, **kwargs):
...
и базовый ресурс:
class SomeBaseResource(ModelResource):
class Meta(...): ...
# the wrapper
@sheker_to_wrap_all_methods_with(...)
def dispatch(self, request_type, request, **kwargs):
logger.info('Enter')
response = super(SomeBaseResource, self).dispatch(request_type, request, **kwargs)
logger.info('Exit')
return response
Когда я использую запрос патча, он работает как ожидалось, но не работает при вызове get_something_extra api.
Как обернуть ВСЕ методы в ресурс?
Обходным решением является добавление Middleware:
MIDDLEWARE = (
'my.basic.BaseMiddleware',
...
)
class BaseMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
@decorator_to_wrap_all_methods_with(...)
def __call__(self, request):
response = self.get_response(request)
return response