Say*_*yse 98 django django-urls
我有一些代码,当它执行时,它抛出一个NoReverseMatch,说:
NoReverseMatch at/my_url/Reverse for'my_url_name',参数'()'和关键字参数'{}'未找到.n模式尝试:[]
这是什么意思,我能做些什么呢?
Say*_*yse 198
该NoReverseMatch错误是说,Django中找不到你在任何已安装的应用程序网址提供的URL匹配的URL模式.
当根据提供的参数无法识别URLconf中的匹配URL时,django.core.urlresolvers会引发NoReverseMatch异常.
要开始调试它,您需要先解决给您的错误消息.
NoReverseMatch at/my_url /
这是当前正在呈现的网址,您的应用程序当前正在尝试访问此网址,但它包含无法匹配的网址
反转'my_url_name'
这是它找不到的网址的名称
带参数'()'和
这些是它提供给url的非关键字参数
找不到关键字参数"{}".
这些是它提供给url的关键字参数
n模式尝试:[]
这些是它能够在您尝试匹配的urls.py文件中找到的模式
首先找到源代码中与当前正在呈现的url相关的代码 - url,view和所涉及的任何模板.在大多数情况下,这将是您当前正在开发的代码的一部分.
一旦你完成了这个,按照django将遵循的顺序阅读代码,直到你到达试图为你构建url的代码行my_url_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可能需要查看内部应用程序的订购)
在Django 1.10中,删除了通过其python路径反转url的功能.应该使用指定的路径.
如果您仍无法追踪问题,请随时提出一个新问题,其中包括您尝试过的内容,您已研究过的内容(您可以链接到此问题),然后将相关代码包含在内.问题 - 您正在匹配的网址,任何相关的网址格式,错误消息中显示django尝试匹配的部分,以及可能的INSTALLED_APPS设置(如果适用).
| 归档时间: |
|
| 查看次数: |
81918 次 |
| 最近记录: |