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

Django Python中如何将所有以search/结尾的路径路由到同一URL?

路由匹配失效原因及修正方案

你当前写法不生效的核心原因是:Django的path()函数不支持原生正则语法,你使用的^、$正则定界符会被path()识别为普通路径字符,自然无法匹配到目标路径。

根据你的实际需求,可以选择以下两种正确写法:

1. 仅匹配根路径下的search/(精确单级匹配)

如果只需要匹配域名/search/这一个路径,直接移除正则符号用普通path写法即可:

path('search/', views.search, name="search"),

path()默认会做精确后缀匹配,该写法会完全命中以search/结尾的根级路径。

2. 匹配任意层级下以search/结尾的所有路径

如果需要命中a/search/、x/y/z/search/这类带任意前缀的search/结尾路径,需要使用支持正则匹配的re_path函数:
首先导入对应模块:

from django.urls import re_path

再编写路由规则:

re_path(r'^.*/search/$', views.search, name="search"),

正则规则里的.*会匹配任意长度的路径前缀,结合结尾的search/$,就能覆盖所有以search/结尾的路径。

补充:如果你使用的是Django 1.x版本,正则路由对应的函数为url,用法和re_path完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:54:03