Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django rest framework DRF为基于函数的视图重写类函数_Django Rest Framework_Django Views_Python Decorators - Fatal编程技术网

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)