Sha*_*wat 3 python django django-views django-rest-framework
我想重写基于类的视图的创建方法,它实现了ListCreateAPIView,一般不会同时覆盖类的方法get_queryset(self)方法的要求,该URL**kwargs是从访问self,但我想重写.create()的方法CreateModelMixin,所以我在拍了一下查找签名的代码作为create(self, request, *args, **kwargs)django 在**kwargs, *args这个函数中传递了什么?这些网址**kwargs是偶然的吗?我如何覆盖通用视图中的 create 方法,因为通用视图request的任何函数都是从 访问的,self但是创建函数的签名显式需要一个请求参数。
以下是 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)
Run Code Online (Sandbox Code Playgroud)
现在,谈论覆盖createfrom 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
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你 :)
| 归档时间: |
|
| 查看次数: |
6994 次 |
| 最近记录: |