在简单的Django应用程序中的NoReverseMatch异常
让我先说我已经阅读了许多与此论坛有关的例外,并且仍然无法找到解决方案。不知道我错过了什么。在简单的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服务器,改为双引号/单引号/不含引号等)。但我无法看到错误。
此代码复制自a CRUD example,我使用的是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
在你的基地urls.py包括你的应用程序的命名空间的网址,因此在模板中,你应该使用命名空间太。在你的情况下: <a href="{% url 'people:people_list' %}">Index</a>
。
有关命名空间的更多信息:https://docs.djangoproject.com/en/1.6/topics/http/urls/#url-namespaces。
此外,人们应该确保在URL命名空间之后使用冒号,在这种情况下使用'people:'。我使用点('.')代替了相当多的时间调试。 – 2014-11-28 03:48:32
您可以分享您正在使用的视图或表单代码来将'people_list''传递给您的模板吗? – br3w5 2014-09-02 08:26:19
ssbrewster,通过添加代码来回答你的问题。我也已经从我复制这个代码的地方给出了教程的链接。 – mht 2014-09-02 08:37:34
@mht,在settings.py中检查你的'ROOT_URLCONF'。它对应于你的urls.py吗? – stalk 2014-09-02 08:53:28