大佬教程收集整理的这篇文章主要介绍了什么是NoReverseMatch错误,如何解决?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
该noreverseMatch错误是说,Django中找不到你在任何已安装的应用程序网址提供的URL匹配的URL模式。
当无法根据提供的参数识别URLconf中的匹配URL时,django.core.urlresolvers会引发noreverseMatch异常。
要开始调试它,你需要先检查给出的错误消息。
这是当前正在呈现的url,它是你的应用程序当前尝试访问的url,但其中包含无法匹配的url
这是它找不到的URL的名称
这些是其提供给url的非关键字参数
这些是其提供给url的关键字参数
这些是它能够在你尝试匹配的urls.py文件中找到的模式
首先在你的源代码中找到与当前呈现的url相关的代码-url,视图和所涉及的任何模板。在大多数情况下,这将是你当前正在开发的代码的一部分。
完成此操作后,请按照django的顺序通读代码,直到到达试图为构造URL的代码行my_url_name。同样,这可能是你最近更改过的地方。
现在,你已经找到了发生错误的位置,请使用错误消息的其他部分来解决问题。
网址名称
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需要其他参数,请查看错误消息,然后首先查看给定参数的值是否正确。
如果不正确:
通常,这意味着你传递的值不包含你期望的值。看一下在何处为其分配值,设置断点,然后需要弄清楚为什么该值无法正确传递。
在网址格式或你正在构造的网址中更正此问题。
如果它们是正确的:
你可以使用regexr这样的网站来快速测试你的模式是否与你认为要创建的url相匹配,将url模式复制到顶部的regex字段中,然后使用文本区域包含你认为的所有url。应该匹配。
常见错误:
请记住用\
前缀转义特定字符
/
大写字符尝试使用a-Z
或\w
代替a-z
或A-Z
如果不在此处,则可能忘记了将应用程序包含在INSTALLED_APPS
设置中(或者INSTALLED_APPS
可能需要查看其中的应用程序顺序)
在Django 1.10中,删除了通过python路径来反向url的功能。应该改用命名路径。
如果仍然无法找到问题,请随时提出一个新问题,其中包括你尝试过的内容,研究的内容(可以链接到此问题),然后将相关代码包括到问题-你要匹配的url,任何相关的url模式,错误消息中显示django试图匹配的部分以及可能的INSTALLED_APPS
设置(如果适用)。
以上是大佬教程为你收集整理的什么是NoReverseMatch错误,如何解决?全部内容,希望文章能够帮你解决什么是NoReverseMatch错误,如何解决?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。