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

在Django中使用Jinja生成URL:空路径的url标签写法问题

解决Django Jinja url标签生成空路径的问题

嘿,这个问题我之前也踩过坑!其实核心问题是你没正确指定路由的name属性——你的第一个路由明明定义了name='foo',但在url标签里只写了命名空间myapp:,没带上这个关键的name值。

先看你的路由配置

urlpatterns = [
    path('', views.foo, name='foo'),  # 这里的name是'foo'
    path('hello/', views.hello, name='hello')
]

正确的url标签写法

第一个空路径的路由已经设置了name='foo',所以在Jinja模板里生成它的URL时,需要把命名空间和这个name结合起来,也就是:

<a href="{% url 'myapp:foo' %}">Link to Empty Path</a>

为什么{% url 'myapp:' %}不行?

Django的url标签要求你指定一个具体的路由name(或者URL模式的名称),只写命名空间加冒号的话,Django无法确定你要匹配命名空间下的哪一个路由——毕竟一个命名空间下可能有多个路由,它没法自动关联到空路径那一条。

不推荐的替代方案(硬编码)

如果你实在不想用name,也可以直接写空字符串,但这会失去url标签的最大优势:以后如果修改了路由的路径(比如把空路径改成home/),你需要手动修改所有模板里的硬编码路径,非常麻烦。所以还是优先用name的方式:

<!-- 不推荐,硬编码路径 -->
<a href="/">Link to Empty Path</a>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:04:22