gpt4 book ai didi

带后缀的 Django Rest 框架 url

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

我有网址:

api/v1/quote/ # list
api/v1/quote/1/ # detail

我怎样才能创建这样的新网址:

api/v1/quote/1/action

并使用参数 active true 在此 url 上发送 post 请求,因此它将使用 url 中的 id 和 post 中的 active ,然后执行该操作吗?

有这方面的例子吗?

我有这个网址代码:

router = routers.DefaultRouter()
router.register(r'quote', QuoteViewSet)

并查看:

class QuoteViewSet(viewsets.ModelViewSet):
queryset = Quote.active.all()
serializer_class = QuoteSerializer

filter_backends = (filters.OrderingFilter,)
ordering_fields = ('created_at',)

http_method_names = ['get', 'post', 'head']

最佳答案

如果您使用的是 Viewset,您可以使用 @detail_route@list_route 装饰器添加额外的操作 ( docs )

在你的情况下,它可能看起来像这样:

class QuoteViewSet(viewsets.ModelViewSet):
queryset = Quote.active.all()
serializer_class = QuoteSerializer

filter_backends = (filters.OrderingFilter,)
ordering_fields = ('created_at',)

http_method_names = ['get', 'post', 'head']

@detail_route(methods=['post'])
def action(self, id):
# put your code here

新的 action 方法会自动创建为 DefaultRouter 路由器,并且可以通过以下方式访问:

api/v1/quote/{id}/action

关于带后缀的 Django Rest 框架 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36128542/

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