当前位置: 首页 > 面试题库 >

什么是NoReverseMatch错误,如何解决?

岳阳文
2023-03-14
问题内容

我有一些代码,执行时会抛出NoReverseMatch,说:

NoReverseMatch at /my_url/ Reverse for 'my_url_name' with arguments '()' and keyword arguments '{}' not found. n pattern(s) tried: []

这是什么意思,我该怎么办?


问题答案:

该NoReverseMatch错误是说,Django中找不到你在任何已安装的应用程序网址提供的URL匹配的URL模式。

当无法根据提供的参数识别URLconf中的匹配URL时,django.core.urlresolvers会引发NoReverseMatch异常。

要开始调试它,你需要先检查给出的错误消息。

  • NoReverseMatch位于/ my_url /

这是当前正在呈现的url,它是你的应用程序当前尝试访问的url,但其中包含无法匹配的url

  • 反向为“ my_url_name”

这是它找不到的URL的名称

  • 带参数’()’和

这些是其提供给url的非关键字参数

  • 找不到关键字参数“ {}”。

这些是其提供给url的关键字参数

  • n个已尝试的模式:[]

这些是它能够在你尝试匹配的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-zA-Z

  • 检查你匹配的模式是否包含在尝试的模式中

如果不在此处,则可能忘记了将应用程序包含在INSTALLED_APPS设置中(或者INSTALLED_APPS可能需要查看其中的应用程序顺序)

Django版本

在Django 1.10中,删除了通过python路径来反向url的功能。应该改用命名路径。

如果仍然无法找到问题,请随时提出一个新问题,其中包括你尝试过的内容,研究的内容(可以链接到此问题),然后将相关代码包括到问题-你要匹配的url,任何相关的url模式,错误消息中显示django试图匹配的部分以及可能的INSTALLED_APPS设置(如果适用)。



 类似资料:
  • 问题内容: 我在使用Node.js并将文件上传到服务器时遇到问题。为了将文件上传到服务器,我使用了这个插件。开始将文件上传到服务器时,Node.js进程崩溃并显示错误: 错误:ENOSPC。 服务器代码未运行。 问题答案: 运行以下命令以避免使用ENOSPC: 对于Arch Linux,将此行添加到: 然后执行: 这也将在重新启动后持续存在。 技术细节来源

  • 问题内容: 我有以下代码,我只是通过在Firebug中运行来尝试 从理论上讲,它应该起作用。但是,将触发错误处理程序,并且ts只是设置为“ error”。我如何获得更多有关发生问题的详细信息? 问题答案: 要查看来自 AJAX 请求的错误消息,您可以执行以下操作: 请注意,在error函数中,您将获得。

  • 我在尝试连接magento v2时遇到此错误。0.2 SOAP API。 我正在本地主机上运行 我尝试了大多数解决方案,但没有一个奏效。 安装SOAP ssl存在于php.ini文件 在文件中获取内容不返回任何内容

  • 当我试图通过heroku打开我正在处理的应用程序时,我得到了一个应用程序错误。我查看了heroku日志,发现以下错误: “错误H10(应用程序崩溃)- 我不确定错误指的是什么,或者我如何解决导致错误的问题。你能给的任何帮助都会很棒!

  • 问题内容: 什么是python中的“错误魔术数字” ImportError,如何解决? 我在网上可以找到的唯一东西表明,这是由于编译.py-> .pyc文件,然后尝试将其与错误版本的python一起使用而引起的。但是,就我而言,该文件有时可以很好地导入,而其他时候则不能,并且我不确定为什么。 python在回溯中提供的信息不是特别有用(这就是为什么我在这里询问…的原因),但是在这里它是有帮助的:

  • 本文向大家介绍什么是错误检测?,包括了什么是错误检测?的使用技巧和注意事项,需要的朋友参考一下 当数据从一台计算机共享到另一台计算机时,系统不会保护该计算机接收的信息是否实际上是另一台计算机传输的数据。错误是当在接收器端接收到的消息与发送的消息不可互换时。 错误类型 以下是错误的类型- 单位错误 当仅将数据包中的单个位从1更改为0或从0更改为1时,会发生这些错误。这些类型的错误最有可能在数据的并行