django - 在 Django 中使用 {% url %} 时的 NoReverseMatch

标签 django django-templates

我正在看一本书(实用 Django 项目第 2 版),但遇到了一个我无法弄清楚的错误。

我得到这个错误: /weblog/处的 TemplateSyntaxError

Caught NoReverseMatch while rendering: Reverse for 'coltrane_category_list' with arguments '()' and keyword arguments '{}' not found.

这是我模板中使用 {% url %} 的代码:

    <li id="main-nav-entries">
        <a href="{% url coltrane_entry_archive_index %}">Entries</a>
    </li>

这是我的 URL 配置:

entry_info_dict = {
    'queryset': Entry.objects.all(),
    'date_field': 'pub_date',
}

urlpatterns = patterns('django.views.generic.date_based',
    (r'^$', 'archive_index', entry_info_dict, 'coltrane_entry_archive_index'),
    (r'^(?P<year>\d{4})/$', 'archive_year', entry_info_dict, 'coltrane_entry_archive_year'),
    (r'^(?P<year>\d{4})/(?P<month>\w{3})/$', 'archive_month', entry_info_dict, 'coltrane_entry_archive_month'),
    (r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/$', 'archive_day', entry_info_dict, 'coltrane_entry_archive_day'),
    (r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$', 'object_detail', entry_info_dict, 'coltrane_entry_detail'),
)

错误是什么意思?我没有给它足够的论据吗? {% url %} 是如何工作的?根据我的理解,它会查看 URL 配置并找到匹配的关键字,并根据 URL 配置中的匹配关键字返回一个 URL。

最佳答案

您必须在模式上使用 url 函数才能正确注册该模式的名称。查看Django documentation on naming url patterns .

基本上,将您的模式更改为:

urlpatterns = patterns('django.views.generic.date_based',
    url(r'^$', 'archive_index', entry_info_dict, name='coltrane_entry_archive_index'),
    url(r'^(?P<year>\d{4})/$', 'archive_year', entry_info_dict, name='coltrane_entry_archive_year'),
    url(r'^(?P<year>\d{4})/(?P<month>\w{3})/$', 'archive_month', entry_info_dict, name='coltrane_entry_archive_month'),
    url(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/$', 'archive_day', entry_info_dict, name='coltrane_entry_archive_day'),
    url(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$', 'object_detail', entry_info_dict, name='coltrane_entry_detail'),
)

我认为它可以在不使用 name= 作为命名 arg 的情况下工作,但我总是更喜欢这样做,因为它对我来说更明确。

关于django - 在 Django 中使用 {% url %} 时的 NoReverseMatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4262657/

相关文章:

Django 模板标签有条件

django - Django UpdateView 中的 {{ form.object }}

python - 为什么 django-star- ratings 在模板加载时不显示星星?

python - 如何访问 Django 模板中的枚举类型

django - 用户输入的链接在 Django 中显示为文本

项目目录中的 Django View

python - 如何将 JSON 转储从表单填充到 Django 模板?

python - 使用工厂男孩时如何覆盖模型保存功能?

python - 为什么我的表单 URL 为所有帖子传递相同的主键?

javascript - 使用 JQUERY 立即将选中的复选框值从一个复选框复制到另一个复选框