繁体   English   中英

如何在 django rest API 中为路由器提供参数?

[英]How to provide a parameter to a router in django rest API?

所以我试图实现的网址如下所示:

127.0.01:8000/api/tech/?belongs=id

我的路由器看起来像这样:

router = routers.DefaultRouter()
router.register('tech', TechViewSet, basename="tech")

urlpatterns = [
    path('', include(router.urls)),
    re_path(r'^tech/(?P<belongs>)$', include(router.urls), name="info"),

我的视图集看起来像这样(还有一个检索和列表功能):

@action(detail=True, url_path='^tech/(?P<belongs>)$', methods=['get'])
    def retrieve1(self, request, group=None):
          pass

并且路由器显然包含在主项目的 urls.py 中

如何让这个网址工作.. 127.0.01:8000/api/tech/?belongs=id

请帮忙。 对不起,我还在学习,路由部分令人困惑..

非常感谢

在不知道您的模型结构的情况下,这有点棘手。 但是,如果您使用get参数进行过滤,则可以使用django_filters为您完成繁重的工作。 像这样的东西:

pip install django-filter

将此添加到您的休息框架设置: 'DEFAULT_FILTER_BACKENDS':['django_filters.rest_framework.DjangoFilterBackend']

然后在您的TechViewSet您可以添加filterset_fields

class TechViewSet:
    <your other variables>
    filterset_fields = ['belongs',]

然后,您可以将查询参数?belongs=<some_id>到您的网址,您的结果将被过滤。

文档: https : //www.django-rest-framework.org/api-guide/filtering/#djangofilterbackend

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM