python - 如何在 django-rest-framework 的通用视图(例如:ListCreateAPIView)中覆盖 .create() 方法?
问题描述
我想在实现 的基于类的视图中覆盖 create 方法ListCreateAPIView
,而不是通常在覆盖方法get_queryset(self)
、请求、url等方法时**kwargs
从 访问self
,但我想覆盖 的.create()
方法CreateModelMixin
,所以我看了一下查找签名的代码作为create(self, request, *args, **kwargs)
django 传入**kwargs, *args
这个函数的什么?这些网址**kwargs
是偶然的吗?如何覆盖通用视图中的 create 方法,因为通用视图request
的任何函数都可以从 访问,self
但 create 函数的签名显式需要请求参数。
解决方案
以下是 DRF ListCreateAPIView,您可以看到*args, **kwargs
直接从标准post
方法传下来:
class ListCreateAPIView(mixins.ListModelMixin,
mixins.CreateModelMixin,
GenericAPIView):
"""
Concrete view for listing a queryset or creating a model instance.
"""
def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
return self.create(request, *args, **kwargs)
现在,谈论create
从覆盖CreateModelMixin
,您可以简单地将其覆盖为:
from rest_framework import generics
class YourWonderfulView(generics.ListCreateAPIView):
queryset = YourModelClass.objects.all()
serializer_class = YourSerializer
def create(self, request, *args, **kwargs): # don't need to `self.request` since `request` is available as a parameter.
# your custom implementation goes here
return Response(response) # `response` is your custom response – e.g. dict, list, list of dicts etc
希望能帮助到你 :)
推荐阅读
- r - 在 R 列表中删除具有 2 个值的元素时出现问题
- java - Keycloak-6.0.1 自定义身份验证器 SPI
- python - 如何在python中为查询字符串格式化纯空('\ 0')字符
- java - 创建名为“org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping”的bean时出错
- javascript - Alert() 在 axios 拦截器(Vue.js)中弹出两次
- r - 在 R 中的 Shiny 中面临 renderUI 的问题
- python - 如何避免熊猫列中的数据类型不匹配
- android - 如何将视图模型绑定到android中的嵌套视图
- c - 函数指针中的分段错误
- git - ':'在git中有什么用
: