python - Django 休息框架网址
问题描述
我正在用rest框架构建一个Django API,我阅读了文档,而DRF只从模型中生成了一个crud(get、post、patch、delete)。现在的交易是我如何使用 DRF 进行自定义操作。
例子:
api/v1/model/custom_action
代码:
class DistrictViewSet(viewsets.ModelViewSet):
queryset = District.objects.all()
serializer_class = DistrictSerializer
def custom_action(request, param):
# do many actions and return as Json Object
网址.py
url(r'api/v1/', include(router.urls))
路由器在哪里
router.register(r'model',api.ModelViewSet)
我对此是正确的,还是我需要创建另一个模型视图,自定义代码并将其添加到路由器列表?
解决方案
您可以像以前一样添加自定义操作,但您可能需要@action
装饰器将 url 配置为应用于单个对象或多个对象。
@action(detail=True)
添加pk
到 url,因为它适用于一个对象。
url 是从动作名称生成的,例如
@action(detail=True)
def custom_action(self):
pass
会产生网址^<app_name>/{pk}/custom_action/$
您可能会发现这很有用: https ://www.django-rest-framework.org/api-guide/viewsets/#marking-extra-actions-for-routing
推荐阅读
- mysql - java jetty 应用程序以一种方式连接到 kubernetes 中的 mysql
- sql - Postgresql - 根据第一个子查询的结果运行第二个子查询
- html - 为什么我的 HTML 表单是水平堆叠的?
- r - 如何在ggplot上的点上添加标记?
- r - 将坐标映射到世界地图并标记它们
- svn - 是什么导致 SVN 错误“修订 xxx 与现有修订 yyy 不匹配...”
- spring-cloud - Spring Cloud Gateway uri解码失败
- python-3.x - 我们如何加快 Pulp 中的 for 循环
- sql - 向现有表添加填充列
- css - 页脚处的 Jumbotron 不粘在页面底部?