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

如何在Django中结合正则URL模式与URL转换器?

Django中re_path实现类似path转换器的参数传递方法

要让re_path能像path那样传递site_url参数给视图,核心是在正则表达式中定义命名捕获组——这是re_path传递参数的唯一方式,而path的转换器本质是帮你自动生成了命名捕获组的正则。

具体操作步骤:

  • 修改你的internal_site_url正则,将需要传递给视图的路径部分用(?P<site_url>正则规则)的格式包裹,其中site_url是要传给视图的参数名,和你在external_site视图中使用的参数名保持一致。
  • 确保internal_site视图函数接收site_url参数,参数名必须和正则里的命名捕获组名称完全匹配。

示例代码:
假设你原本的internal_site_url是匹配以internal/开头的内部站点路径,修改后的配置如下:

# 定义带命名捕获组的正则
internal_site_url = r'^internal/(?P<site_url>.*)$'

urlpatterns = [
    re_path(internal_site_url, internal_site),  # 现在会把internal/后面的路径以site_url参数传给视图
    path('<path:site_url>', external_site),      # 保持原配置不变
]

如果你的内部站点需要匹配整个路径作为site_url(比如类似path的<path:site_url>匹配任意路径),可以直接把整个正则放在命名捕获组中:

internal_site_url = r'^(?P<site_url>internal/.*)$'

注意:命名捕获组的名称必须和视图接收的参数名完全一致,否则视图会无法获取到对应参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:22:50