我有一些代码,当它执行时,它抛出一个NoReverseMatch,说:
NoReverseMatch at/my_url/Reverse for'my_url_name',参数'()'和关键字参数'{}'未找到.n模式尝试:[]
这是什么意思,我能做些什么呢?
我正在按照官方教程学习Django并使用1.5.
我有这个链接作为我的索引模板的一部分,这是正常工作:
<li><a href="/polls/{{ poll.id }}/">{{ poll.question }}</a></li>
Run Code Online (Sandbox Code Playgroud)
但是,这是硬编码的,教程建议更好的方法是使用:
<li><a href="{% url 'detail' poll.id %}">{{ poll.question }}</a></li>
Run Code Online (Sandbox Code Playgroud)
这样你在处理大量模板时会更好,你必须对网址进行更改.
由于我进行了上述更改,因此在运行应用时出现以下错误:
Exception Type: NoReverseMatch
Exception Value: Reverse for 'detail' with arguments '('',)' and keyword arguments '{}' not found.
Run Code Online (Sandbox Code Playgroud)
我的urls.py看起来像这样:
from django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'),
url(r'^(?P<poll_id>\d+)/results/$', views.results, name='results'),
url(r'^(?P<poll_id>\d+)/vote/$', views.vote, name='vote'),
)
Run Code Online (Sandbox Code Playgroud)
views.py看起来像这样:
from django.shortcuts import render, get_object_or_404
from django.http import Http404
from polls.models import Poll
def index(request):
latest_poll_list = …
Run Code Online (Sandbox Code Playgroud)