简单的Django应用程序中的NoReverseMatch异常

时间:2014-09-02 08:18:19

标签: python django

让我先说一下,我在这个论坛上已经阅读了很多与此例外相关的主题,但仍无法找到解决方案。不知道我错过了什么。

以下是我的应用中的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: []

我阅读了很多关于此错误的帖子并尝试了几件事(重新启动网络服务器,更改为双引号/单引号/无引号等)。但我无法看到错误。

此代码是从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

1 个答案:

答案 0 :(得分:1)

在您的基础urls.py中,您包含应用程序的url和命名空间,因此在模板中您也应该使用命名空间。在您的情况下: <a href="{% url 'people:people_list' %}">Index</a>

有关命名空间的更多信息:https://docs.djangoproject.com/en/1.6/topics/http/urls/#url-namespaces

相关问题