目前,Django网址标记出现NoReverseMatch错误。 一直在关注Django的权威指南,Django doucmentation并在这里和互联网搜索
网址:
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
提前致谢
答案 0 :(得分:6)
你试图打电话给什么观点?您正在调用name
视图中的网址,但name
不存在。由于您只有一个命名视图home
,我将假设您正在尝试使用该视图。
您的视图和您的网址都没有参数,但您在网址中传递result.name
作为参数。
您需要通过def Link(request, result_name):
接受视图中的参数,并通过带有(?P<result_name>..
的正则表达式将其捕获到您的网址中,或者调用您的网址而不传递参数:
{% for result in results %}
<a href="{% url home %}">test</a>
由于你的视图中没有逻辑,并且正在传递一个多字参数而不是“重击”它 - 我将假设您想要执行后者并从URL调用中删除该参数。
答案 1 :(得分:0)
您的{%url name result.name%}是问题所在。
由于您的Link方法具有关键字参数,因此您的url反向模板标记应具有匹配的关键字参数。
<a href="{% url search result_name=result.name %}">test</a>
继续阅读以明确问题是什么,正如您现在设置的那样,在模板中反转网址的正确方法是: {%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(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"),
<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>