NoReverseMatch Django URL

bpzcxfmw  于 2023-06-25  发布在  Go
关注(0)|答案(3)|浏览(136)

当前遇到Django URL标签的NoReverseMatch错误。一直在关注Django的权威指南,Django文档,并在这里和互联网上搜索
网址:

url(r'^test/', Search_Page),
url(r'^search/', Search),
url(r'^details/', Details_Main),
url(r'^Link/(d+)/$', Link),
url(r'^$', 'Parks.views.Link', name="home"),
url(r'^(?P<result_name>)/$', Link),

视图:

def Link(request, result_name):
    return render_to_response('Search_Page.html')

模板:

{% for result in results %}
    <a href="{% url name result.name %}">test</a>

错误:

NoReverseMatch at /search/
Reverse for 'name' with arguments '(u'North West Thrill Centre',)' and keyword arguments '{}' not found.Request Method: GET 
Request URL: http://127.0.0.1:8000/search/?search=a&type=parks&submit=Search 
Django Version: 1.4.2 
Exception Type: NoReverseMatch 
Exception Value: Reverse for 'name' with arguments '(u'North West Thrill Centre',)' and keyword arguments '{}' not found. 
Exception Location: C:\Python27\lib\site-packages\django\template\defaulttags.py in render, line 424 
Python Executable: C:\Python27\python.exe 
Python Version: 2.7.3 
Python Path: ['C:\\Users\\User\\Documents\\Django\\ParkManager',
 'C:\\Windows\\system32\\python27.zip',
 'C:\\Python27\\DLLs',
 'C:\\Python27\\lib',
 'C:\\Python27\\lib\\plat-win',
 'C:\\Python27\\lib\\lib-tk',
 'C:\\Python27',
 'C:\\Python27\\lib\\site-packages'] 
Server time: Mon, 4 Feb 2013 16:44:27 +0000 

Error during template rendering
In template C:\Users\User\Documents\Django\ParkManager\Templates\Details_Main.html, error at line 23

先谢了

wydwbb8l

wydwbb8l1#

你想称之为哪种观点?您正在调用name视图上的URL,但name不存在。由于您只有一个命名视图home,因此我假设这就是您要使用的视图。
视图和URL都没有参数,但您在URL中传递result.name作为参数。
您需要通过def Link(request, result_name):在视图中接受一个参数,并通过带有(?P<result_name>..的正则表达式在URL中捕获它,或者在没有传递参数的情况下调用您的URL:

{% for result in results %}
    <a href="{% url home %}">test</a>

由于您的视图中还没有逻辑,并且正在传递一个多字参数,而不是“slugifying”它-我将假设您希望执行后者,并从URL调用中删除参数。

iq3niunx

iq3niunx2#

您的{% url name www.example.com %}有问题。result.name %} is the problem.
因为你的Link方法有一个关键字参数,你的url反向模板标签应该有一个匹配的关键字参数。

template.html

<a href="{% url search result_name=result.name %}">test</a>

继续阅读以明确问题所在,正如您现在设置的那样,在模板中反转URL的正确方法是:
{% url [name][args][kwargs]%}
其中,
[name]是以下之一:test、search_start、details、link、home或search。或者查看函数的完整路径,但我建议现在保持简单。
[args]可以是空的,也可以是参数列表。
[kwargs]可以是空的,也可以是关键字参数列表。
关于url标签的文档可以在这里找到,并概述了使用它的其他方法(https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from = olddocs #url)。

*顺便说一句,你会遇到一些在URL中不允许的字符在搜索字符串中被允许的问题,比如空格和&符号。

www.example.com urls.py

url(r'^test/', Search_Page, name="test"),
url(r'^search/', Search, name="search_start"),
url(r'^details/', Details_Main, name="details"),
url(r'^Link/(d+)/$', Link, name="link"),
url(r'^$', 'Parks.views.Link', name="home"),
url(r'^(?P<result_name>)/$', Link, name="search"),

another_template.html

<a href="{% url search result_name=result.name %}">test</a>
<!-- and more examples -->
<a href="{% url test %}">link to test</a>  
<a href="{% url search_start %}">link to search</a> 
<a href="{% url details %}">link to details</a> 
{% for a_link in links %}
    <a href="{% url link a_link.id %}">link to details (of a_link)</a> 
{% endfor %}
<a href="{% url home %}">home</a>
jobtbby3

jobtbby33#

检查模型中是否存在该字段。如果字段存在,请检查其拼写是否与模型中的相同

相关问题