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

Django模板中{% url ...%}与{{...}}用法差异及NoReverseMatch报错问题

问题解决方案

错误根因

你遇到NoReverseMatch异常的核心原因是URL命名空间不匹配:
你的博客应用urls.py中显式声明了app_name = 'blog',相当于给当前应用下的所有URL路由都加了blog命名空间前缀,你原来模板中的写法{% url 'blog_post' post.slug %}没有指定命名空间,Django无法找到对应路由,因此抛出反向解析异常。

正确写法

将模板中的链接代码修改为如下形式即可正常运行:

<a href="{% url 'blog:blog_post' post.slug %}">
    {{ post.title }}
</a>

第二种写法的隐患

你直接使用{{ post.slug }}作为链接能运行属于巧合,仅在当前页面路径为博客列表根路径时生效,存在明显隐患:

  • 若当前页面处于站点其他层级路径下,相对路径拼接后会出现404错误
  • 后续如果调整博客路由前缀,所有写死的相对路径都需要手动修改,维护成本极高,不建议使用。

内容的提问来源于stack exchange,提问作者J.Felipe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:27:03