Django rest framework DRF为基于函数的视图重写类函数
我有一个基于函数的视图(使用Django rest framework DRF为基于函数的视图重写类函数,django-rest-framework,django-views,python-decorators,Django Rest Framework,Django Views,Python Decorators,我有一个基于函数的视图(使用api\u视图decorator),我想更改APIView的一个类函数。 例如 我想用这个覆盖APIView的一个函数(比如initialize\u request) class ViewOverrideMixin(object): def initialize_request(self, request, *args, **kwargs): # do_something super(ViewOverrideMixin, sel
api\u视图
decorator),我想更改APIView
的一个类函数。
例如
我想用这个覆盖APIView的一个函数(比如initialize\u request
)
class ViewOverrideMixin(object):
def initialize_request(self, request, *args, **kwargs):
# do_something
super(ViewOverrideMixin, self).initialize_request(request, *args, **kwargs)
如果这是一个基于类的视图,我可以将新函数放在视图类中,也可以继承这个mixin,如何为基于函数的视图做到这一点?
可以添加重写类函数的装饰器吗
def decorator(viewfn):
def wrapper(fn):
# override the APIView function with custom mixin here return the class
# what would that be?
return fn
return wrapper(viewfn)
初始化过程和其他DRF事情都发生在装饰器内部。如果要调整功能,必须编写自己的自定义
api\u视图
装饰器。您可以找到相同的源代码
注意:在您的情况下,编写一个新的api_视图装饰程序似乎是多余的,请使用CBV并重写该方法
def decorator(viewfn):
def wrapper(fn):
# override the APIView function with custom mixin here return the class
# what would that be?
return fn
return wrapper(viewfn)