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

如何在Django中用re_path配置匹配指定字符的自定义URL路径

使用Django的re_path配置符合要求的URL路径

你可以通过自定义正则表达式实现这个需求,具体配置步骤如下:

1. 在urls.py中定义URL模式

在项目或应用的urls.py文件里,导入re_path并添加对应的URL规则:

from django.urls import re_path
from . import views

urlpatterns = [
    re_path(r'^mysite/(?P<resource>[a-zA-Z0-9-.]+)/$', views.resource_detail, name='resource-detail'),
]

2. 正则表达式规则说明

  • ^mysite/:匹配URL起始部分的/mysite/,确保路径从这里开始
  • (?P<resource>[a-zA-Z0-9-.]+):
    • (?P<resource>...)是命名捕获组,resource是后续在视图中可接收的参数名(可替换为slug等你习惯的名称)
    • [a-zA-Z0-9-.]+是核心匹配规则:[]内的字符表示允许的范围,包含大小写ASCII字母、数字、连字符-和点.;+表示匹配一个或多个这类字符
  • /$:匹配URL结尾的斜杠,避免匹配到/mysite/toto-25b.ko/extra这类带多余后缀的路径

3. 视图函数接收参数

对应的视图函数可以直接接收捕获到的参数:

def resource_detail(request, resource):
    # 这里编写业务逻辑,比如根据resource参数查询对应资源
    return HttpResponse(f"访问的资源标识:{resource}")

补充说明

  • 若不需要命名捕获组,也可以简化为([a-zA-Z0-9-.]+),但命名组可读性更强,便于后续维护
  • 若你的Django设置中APPEND_SLASH=True(默认开启),可将正则里的/$改为/?$,允许URL结尾有无斜杠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:50:29