Django在通用视图中抛出404

时间:2010-05-12 10:55:12

标签: python django http-status-code-404 django-generic-views

我正在尝试获取在django中工作的基于日期的存档的通用视图。 我按照教程中的描述定义了url,但只要我想访问带有变量(例如月份或年份)的url,django就会返回404错误。它甚至不会产生TemplateDoesNotExist-execption。没有变量的普通网址工作正常。

这是我的更新 urlconf:

from django.conf.urls.defaults import *
from zurichlive.zhl.models import Event

info_dict = {
        'queryset': Event.objects.all(),
        'date_field': 'date',
        'allow_future': 'True',
}

urlpatterns += patterns('django.views.generic.date_based',
    (r'events/(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\w{1,2})/(?P<slug>[-\w]+)/$', 'object_detail', dict(info_dict, slug_field='slug', template_name='archive/detail.html')),
    (r'^events/(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\w{1,2})/(?P<slug>[-\w]+)/$', 'object_detail', dict(info_dict, template_name='archive/list.html')),
    (r'^events/(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\w{1,2})/$','archive_day',dict(info_dict,template_name='archive/list.html')),
    (r'^events/(?P<year>\d{4})/(?P<month>[a-z]{3})/$','archive_month', dict(info_dict, template_name='archive/list.html')),
    (r'^events/(?P<year>)/$','archive_year', dict(info_dict, template_name='archive/list.html')),
    (r'^events/$','archive_index', dict(info_dict, template_name='archive/list.html')),
)

当我访问/ events / 2010 / may / 12 / this-is-a-slug /我应该访问detail.html模板,但我得到404.我做错了什么?

我正在使用Django 1.1.2

2 个答案:

答案 0 :(得分:2)

你忘记了正则表达式中的反斜杠:

(r'events/(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\w{1,2})/(?P<slug>[-\w]+)/$'

此外,您(正确地)将URL正则表达式以斜杠结尾,因此您的网址应为/events/2010/may/12/this-is-a-slug/

答案 1 :(得分:0)

再次检查template_name。