Я пытаюсь получить универсальные представления для основанного на дате архива, работающего в django. Я определил URL, как описано в учебном руководстве, но django возвращает 404 ошибки каждый раз, когда я хочу получить доступ к URL с переменной (такой как месяц или год) в нем. Это не делает даже производит TemplateDoesNotExist-execption. Нормальные URL без переменных хорошо работают.
Вот мой обновленный 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
Вы забыли обратную косую черту в своих регулярных выражениях:
(r'events/(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\w{1,2})/(?P<slug>[-\w]+)/$'
Также вы (правильно) получили регулярное выражение URL, оканчивающееся косой чертой, поэтому ваш URL должно быть / events / 2010 / may / 12 / this-is-a-slug /
.