简单Django应用中的NoReverseMatch异常
我想先说,我在这个论坛上看了很多关于这个异常的讨论,但还是找不到解决办法。不知道我漏掉了什么。
这是我应用中的urls.py文件:
from django.conf.urls import patterns, url, include
from django.core.urlresolvers import reverse
urlpatterns = patterns('',
url(r'^$', PeopleList.as_view(), name='people_list'),
)
这是生成错误的模板代码:
<a href="{% url 'people_list' %}">Index</a>
我遇到的错误是:
Reverse for 'people_list' with arguments '()'
and keyword arguments '{}' not found. 0 pattern(s) tried: []
我看了很多关于这个错误的帖子,尝试了几种方法(重启web服务器、换成双引号/单引号/不加引号等等)。但是我还是看不到错误。
这段代码是从一个CRUD示例复制过来的,我使用的是django 1.6.4。
视图代码是:
from django.views.generic.list import ListView
from people.models import Category, Person
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from people.forms import CategoryForm, PersonForm
from django.views.generic.detail import DetailView
from django.shortcuts import get_object_or_404
from django.core.urlresolvers import reverse
class PeopleList(PersonMixin, ListView):
template_name = 'people/object_list.html'
其实代码来自这个链接:http://www.pythondiary.com/tutorials/simple-crud-app-django.html。不过我用的是django 1.6。
我做的一个更改是:
from django.conf.urls.defaults import patterns, url, include
我改成了:
from django.conf.urls import patterns, url, include
1 个回答
1
在你的基础 urls.py 文件中,你用命名空间包含了应用的 URL,所以在模板里也应该使用这个命名空间。在你的例子中,应该这样写:
<a href="{% url 'people:people_list' %}">Index</a>
。
关于命名空间的更多信息,可以查看这里: https://docs.djangoproject.com/en/1.6/topics/http/urls/#url-namespaces。