gpt4 book ai didi

get - django-rest-framework:同一 URL 中独立的 GET 和 PUT 但不同的泛型 View

转载 作者:行者123 更新时间:2023-12-02 03:36:14 26 4
gpt4 key购买 nike

我正在使用 django-rest-framework,我需要在 URL 文件中映射两个具有相同 url 的通用 View (iḿ 已经使用 URL,但不使用路由):

我需要在一个 URL 中允许 GET、PUT 和 DELETE 动词(例如/api/places/222),并允许每个人获取具有相关实体地点的每个字段,但只允许使用相同的网址。

地点实体:

- id (not required in PUT)
- name (required always)
- date (not required in PUT but required in POST)

网址

url(r'^api/places/(?P<pk>\d+)/?$', PlacesDetail.as_view(), name='places-detail'),

我尝试使用 RetrieveDestroyAPIView 和 UpdateAPIView,但无法仅使用一个 URL。

最佳答案

我建议您创建一些序列化器来满足您的需求。然后重写 View 的 get_serializer 方法,以便 View 根据 HTTP 请求方法切换序列化器。

这是一个未经测试的快速示例:

class PlacesDetail(RetrieveUpdateDestroyAPIView):

def get_serializer_class(self):
if self.request.method == 'POST':
serializer_class = FirstSerializer
elif self.request.method == 'PUT':
serializer_class = SecondSerializer

return serializer_class
...

看基类方法的注释:

def get_serializer_class(self):
"""
Return the class to use for the serializer.
Defaults to using `self.serializer_class`.

You may want to override this if you need to provide different
serializations depending on the incoming request.

(Eg. admins get full serialization, others get basic serialization)
"""
...

关于get - django-rest-framework:同一 URL 中独立的 GET 和 PUT 但不同的泛型 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22104487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com