捕获Django Res中的URL参数

2024-06-24 13:38:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在下面的url中捕获url参数 “/portal/{pk}/portalProject/{pk}”

以下url未指向下面的视图函数。这里怎么了?在

在网址.py在

router = routers.DefaultRouter()
router.register(r'movies', MoviesViewSet)
router.register(r'project', ClientViewSet)
router.register(r'portal', PortalViewSet)
router.register(r'portal/(?P<portal_pk>\d+)/portalProject/(?P<portalProject_pk>\d+)/$', PortalViewSet, 'portalProject')
router.register(r'portalProject', PortalProjectViewSet)

在视图.py在

^{pr2}$

Tags: 函数pyregister视图url参数portalrouter
1条回答
网友
1楼 · 发布于 2024-06-24 13:38:02

您实际上并没有在^{}中声明特定的路由。router负责为您创建所有子url。只要做router.register(r'portal', PortalViewSet)就会给你:

  • [格式]
  • {prefix}/[.format]
  • {prefix}/{methodname}/[.format]-@list_route修饰方法
  • {prefix}/{lookup}/[.format]
  • {prefix}/{lookup}/{methodname}/[.format]-@detail_route修饰方法

所以除非你想创建一个自定义路由器,否则你必须将你的url模式改成/portal/{pk}/portalProject/?id={pk}

另外,如果您是通过pk请求portalProject,那么就不需要将url嵌套在/portal/{pk}下。portalProjectpk已经足够具体了。您已经有了portalProject的路径,因此您将有效地获得两种访问同一数据的方法,其中一种更为复杂,毫无理由。

不过,我相信这就是你想要的:
https://github.com/alanjds/drf-nested-routers
https://chibisov.github.io/drf-extensions/docs/#nested-routes

相关问题 更多 >