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

Django Reverse {% url %}错误:未找到匹配的视图函数或路由名称

解决Django {% url %}反向解析错误:Reverse for '' not found

嘿,这个问题我太熟了!你遇到的Reverse for '' not found错误,看起来是模板里的{% url %}标签写法出了问题——毕竟你视图里没用到reverse(),锅肯定在模板那边。结合你给出的代码,我给你梳理几个最可能的原因和解决办法:

1. 没正确使用应用命名空间

你的bookings/urls.py里已经设置了app_name='bookings',这意味着所有该应用下的URL都属于bookings这个命名空间。如果模板里直接写{% url 'booking' %},Django很可能找不到对应的视图(尤其是项目里有多个应用时)。

正确写法应该带上命名空间:

{% url 'bookings:booking' %}

或者用双引号也可以:

{% url "bookings:booking" %}

2. 模板里的引号使用混乱

错误提示里的'"'是HTML转义后的'"',说明你模板里的{% url %}标签大概率出现了引号嵌套错误,比如写成了:

{% url ""booking"" %}  <!-- 错误:多打了一层双引号 -->
{% url "'booking'" %}  <!-- 错误:单引号套单引号 -->

这种写法会让Django把空字符串当成要反转的视图名,自然就会报'' is not a valid view function or pattern name。

解决办法:保证引号成对使用,要么全用单引号,要么全用双引号,不要嵌套混用。

3. 视图名拼写错误

检查模板里{% url %}标签里的名字,是不是和bookings/urls.py里的name参数完全一致。比如你urls里是name='booking',就不能写成'book'或者'bookings'——拼写错一个字符都会导致找不到。

快速验证URL配置是否正常

如果不确定是模板还是URL配置的问题,可以先在Django Shell里测试反向解析:

  1. 进入项目目录,运行:
python manage.py shell
  1. 在shell里输入:
from django.urls import reverse
reverse('bookings:booking')

如果能正常返回'/book/booking/',说明你的URL配置完全没问题,问题100%出在模板的{% url %}标签写法上。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:49:42