NoReverseMatch错误是说,Django中找不到你在任何已安装的应用程序网址提供的URL匹配的URL模式。
当根据提供的参数无法识别URLconf中的匹配URL时,django.core.urlresolvers会引发NoReverseMatch异常。
错误可能发生如下情况:
url匹配错误
应用程序当前正在尝试访问该网址,但它包含无法匹配的网址
反转'my_url_name'
这是它找不到的网址的名称
非关键字参数错误
这些是它提供给url的非关键字参数
关键字参数错误
这些是它提供给url的关键字参数
正则表达式模式匹配错误
这些是它能够在您尝试匹配的urls.py文件中找到的模式
调试方法如下:
网址名称
- 有没有错别字?
- 您是否提供了试图访问给定名称的网址?
- 如果您在应用程序中设置了app_name
urls.py
(例如app_name = 'my_app'
),或者您在应用程序中包含了命名空间(例如include('myapp.urls', namespace='myapp')
,那么您需要在撤消时包含命名空间,例如{% url 'myapp:my_url_name' %}
或reverse('myapp:my_url_name')
。
参数和关键字参数
参数和关键字参数用于匹配给定URL中存在的任何捕获组,这些捕获组可以由()url模式中的周围括号标识。
假设您匹配的url需要其他参数,请查看错误消息并首先查看给定参数的值是否正确。
如果他们不正确:
值缺失或为空字符串
这通常意味着您传入的值不包含您期望的值。看看你为它分配值,设置断点,你需要弄清楚为什么这个值没有正确传递。
关键字参数有拼写错误
在url模式或您正在构建的url中更正此问题。
如果他们是正确的:
调试正则表达式
您可以使用regexr等网站快速测试您的模式是否与您认为正在创建的网址相匹配,将网址模式复制到顶部的正则表达式字段中,然后使用文本区域包含您认为的任何网址应该匹配。
常见错误:
匹配.通配符或任何其他正则表达式字符
请记住使用\前缀来转义特定字符
仅匹配大写/小写字符
尝试使用
a-Z
或\w
代替a-z
或A-Z
检查您匹配的模式是否包含在尝试的模式中
如果它不在这里,那么您可能忘记在INSTALLED_APPS设置中包含您的应用程序(或者INSTALLED_APPS可能需要查看内部应用程序的顺序)