You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DRF中路由含路径分隔符/的URL参数?

问题描述

在Django REST Framework(DRF)中,需要将URL模式api/v1/{resourceId}/owners路由到对应视图,但resourceId本身包含路径分隔符/(例如请求api/v1/somethings/value/owners),额外的/会触发404资源未找到错误。如何实现该URL路由并在视图中正确获取resourceId?

现有配置代码如下:

urls.py

path('api/v1/<str:resource_id>/owners', ResourceOwnershipView.as_view())

views.py

class ResourceOwnershipView(APIView):

    def get(self, request: HttpRequest, resource_id: str) -> Response:
        # 处理resource_id的业务逻辑
解决方案

使用Django内置的path路径转换器替换原有的str转换器即可解决问题。str转换器仅匹配不含/的字符串,而path转换器会匹配包含/在内的任意非空字符串,直到URL中/owners部分之前的所有内容。

修改后的urls.py配置:

path('api/v1/<path:resource_id>/owners', ResourceOwnershipView.as_view())

此时请求api/v1/somethings/value/owners时,resource_id会被正确解析为somethings/value,视图中的resource_id参数可直接获取完整的带/的字符串。

注意事项

  • 该路由需放在其他更具体的API路由之后定义,避免拦截正常路由请求。例如若存在api/v1/users/owners这类明确路由,需先定义它,再定义带path转换器的路由,否则users会被误识别为resource_id的一部分。

内容的提问来源于stack exchange,提问作者jebaseelan ravi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:30:47