django-rest-framework - DRF 覆盖基于函数的视图的类函数
问题描述
我有一个基于函数的视图(带有api_view
装饰器),我想更改APIView
. 例如。
@api_view(['GET'])
...
def a_view(request, id):
...
return Response({'data': 'testing'}, status=200)
我想initialize_request
用这个覆盖 APIView 的一个函数(比如)。
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_view
装饰器内部。如果要调整功能,则必须编写自己的自定义api_view
装饰器。您可以在 GitHub 中
找到相同的源代码
注意:在您的情况下,编写新的 api_view 装饰器似乎是多余的,请使用 CBV,并覆盖该方法
推荐阅读
- dask - Dask iloc 解决方法?
- excel - 更新日期时如何更改单元格的值?
- android - 如何等到所有视图模型异步操作完成
- html - 某些 HTML 文本在 Android 设备上的 Google Chrome 中显示过大
- php - Laravel 6 雄辩的多类别关系
- javascript - Nodejs 使用安全路由 jwt 获得 401 Unauthorized
- bitbucket - 如何在 BitBucket 上显示 HTML 文件?
- typescript - 在这种情况下如何在没有未定义的情况下获得类型部分
- apache-flink - 在 Flink 中不同作业之间交换数据
- javascript - 如何在类外调用 React 组件的方法?