Django 什么是NoReverseMatch错误,如何修复它?
我有一些代码,当它执行时,它抛出一个NoReverseMatch,说: 找不到参数为“()”且关键字参数为“{}”的“my_url_name”的/my_url/Reverse处的NoReverseMatch。已尝试n个模式:[] 这意味着什么,我能做些什么?错误是Django无法找到与您在任何已安装应用程序的url中提供的url匹配的url模式 当无法根据提供的参数识别URLconf中的匹配URL时,django.core.urlResolver会引发NoReverseMatch异常 要开始调试它,您需要先取消选中提供给您的错误消息Django 什么是NoReverseMatch错误,如何修复它?,django,django-urls,Django,Django Urls,我有一些代码,当它执行时,它抛出一个NoReverseMatch,说: 找不到参数为“()”且关键字参数为“{}”的“my_url_name”的/my_url/Reverse处的NoReverseMatch。已尝试n个模式:[] 这意味着什么,我能做些什么?错误是Django无法找到与您在任何已安装应用程序的url中提供的url匹配的url模式 当无法根据提供的参数识别URLconf中的匹配URL时,django.core.urlResolver会引发NoReverseMatch异常 要开始调试
- NoReverseMatch at/my_url/ 这是当前正在呈现的url,也是应用程序当前尝试访问的url,但它包含无法匹配的url
- “我的url\u名称”的反面 这是找不到的url的名称
- 带参数“()”和 这些是它提供给url的非关键字参数
- 找不到关键字参数“{}” 这些是它提供给url的关键字参数
- 已尝试n个模式:[] 这些是它能够在URL.py文件中找到的模式,它试图匹配这些模式
my\u url\u name
构建url的代码行。同样,这可能是你最近改变的地方
现在您已经发现了错误发生的位置,请使用错误消息的其他部分来解决问题
url名称
- 有打字错误吗
- 您是否提供了试图访问给定名称的url
- 如果您在应用程序的
(例如url.py
)中设置了app\u name,或者如果您在应用程序中包含了一个名称空间(例如app\u name='my\u app'
,则在反转时需要包含名称空间,例如include('myapp.url',namespace='myapp')
或{%url'myapp:my\u url\u name'
反转('myapp:my\u url\u name'))
()
括号识别
假设要匹配的url需要其他参数,请查看错误消息,然后首先查看给定参数的值是否正确
如果它们不正确:
- 缺少值或为空字符串 这通常意味着您要传递的值不包含您期望的值。请查看为其分配值的位置,设置断点,然后您需要找出此值无法正确传递的原因
- 关键字参数有输入错误 在url模式或正在构建的url中更正此错误
- 调试正则表达式
您可以使用这样的网站快速测试您的模式是否与您认为正在创建的url匹配,将url模式复制到顶部的regex字段中,然后使用文本区域包含您认为应该匹配的任何url
常见错误:
- 与
通配符或任何其他正则表达式字符匹配 记住用
前缀转义特定字符\
- 仅与小写/大写字符匹配
尝试使用
或a-Z
而不是\w
或a-Z
a-Z
- 与
- 检查您匹配的模式是否包含在尝试的模式中
如果不在此处,则可能是您忘记将您的应用程序包含在
设置中(或者已安装的应用程序
中的应用程序顺序可能需要查看)已安装的应用程序
如果你仍然无法找到问题所在,那么请随意提出一个新问题,其中包括你尝试过的内容、你研究过的内容(你可以链接到这个问题),然后包括与问题相关的代码-您正在匹配的url、任何相关的url模式、显示django试图匹配的内容的错误消息部分,以及可能的
安装的应用程序设置(如果适用)。并确保您的路线在路线列表中:
./manage.py show_urls | grep path_or_name
可能是它没有加载您期望的模板。我添加了一个从UpdateView
继承的新类-我以为它会自动从我命名的类中选取模板,但它实际上是基于类的model
属性加载的,这导致了另一个(错误)正在加载模板。一旦我为新类显式设置了template\u name
,它就工作得很好了。最后我们有了一个标准答案,我们可以作为dup目标提供。您可以详细说明django 1.10中的命名路径吗?是的,在应用程序的URL.py中设置应用程序名称(例如,应用程序名称='my\u应用程序')
我觉得这个live regex测试仪更有帮助:感谢您提供关于NoReverseMatch的精彩教程!我能够解决我的问题。﹣1show_url
不是Django功能,这不会回答问题。