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

Django URL路由如何捕获包含多个正斜杠的字符串参数

解决方案

Django内置的str路径转换器默认不匹配路径分隔符/,所以ID中包含斜杠时会出现路径匹配失败的问题,你可以选择以下两种方案调整:

方法一:使用内置path转换器(最简单方案)

直接修改urls.py中的路径配置,将<str:id>替换为<path:id>即可,path转换器的作用就是匹配包含斜杠的任意非空字符串,完全适配你的需求。
修改后的urls.py示例:

from django.urls import path
from. import views
app_name ='graduates'
urlpatterns = [
    # 其他原有路由保持不变
    path('status_detail/<path:id>/', views.status_detail, name='status_detail'),
]

修改后views.py和模板中的{% url %}调用代码不需要做任何调整,即可正常传递A/ur4040/09这类带斜杠的ID参数。

方法二:自定义转换器(更精确的匹配规则)

如果你需要严格限制ID的格式,避免匹配到不符合规则的过长路径,可以自定义专属的路径转换器,操作步骤如下:

  1. 在你的app目录下新建converters.py文件,写入如下代码:
class GraduateIdConverter:
    # 正则匹配你给出的A/ur4040/09这类固定格式
    regex = r'[A-Z]/ur\d{4}/\d{2}'

    def to_python(self, value):
        return value

    def to_url(self, value):
        return value
  1. 在urls.py中注册自定义转换器并使用:
from django.urls import path, register_converter
from. import views
from.converters import GraduateIdConverter

# 注册自定义转换器
register_converter(GraduateIdConverter, 'graduate_id')

app_name ='graduates'
urlpatterns = [
    # 其他原有路由保持不变
    path('status_detail/<graduate_id:id>/', views.status_detail, name='status_detail'),
]

该方案只会匹配符合指定格式的ID路径,安全性和准确性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 03:09:00