Django не может найти шаблон URL-адреса в URLConf, хотя он определен

Я набираю следующий URL в своем браузере:

http://localhost:8000/en/weblog/2010/aug/10/wie-baue-ich-ein-weblog/

я получаю сообщение об ошибке «Страница не найдена (404)», хотя 10-я запись

(r'^weblog/(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(P?<slug>[-\w]+)/$', 'django.views.generic.date_based.object_detail', entry_info_dict),

в моем URLConf должно совпадать.

Отличие только в префиксе для языка, но на другие шаблоны это не влияет, так почему же должно влиять только на это. (Все шаблоны URL совпадают, кроме приведенного выше)

Мой UrlConf выглядит так:

urls.py

from django.conf.urls.defaults import *
from webpage import settings
import os 

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

from blog.models import Entry

urlpatterns = patterns('preview.views',
    (r'^admin/(.*)', admin.site.root),
    (r'^$', 'home'),
    (r'^about_me.html/', 'show_about_me'),
    (r'^study.html/', 'show_study'),
    (r'^profile.html/', 'show_profile'),
    (r'^blog.html/', 'show_blog'),
    (r'^contact.html/', 'show_contact'),
    (r'^impressum.html/', 'show_impressum'),
)

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

urlpatterns += patterns('',
    (r'^weblog/$', 'webpage.blog.views.entries_index'),
    (r'^weblog/(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(P?<slug>[-\w]+)/$', 'django.views.generic.date_based.object_detail', entry_info_dict),
)

if settings.DEBUG:
    urlpatterns += patterns('', 
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', { 'document_root' : os.path.join(settings.CURRENT_PATH, 'static') }),
)

В чем проблема. Я ценю любую помощь,

С наилучшими пожеланиями.


person saeed    schedule 12.08.2010    source источник
comment
10-я запись в моем URLConf соответствует шаблону? Действительно? Можете быть более конкретными. Какой шаблон соответствует? это не влияет на другие шаблоны? Они работают? Укажите URL-адрес, который работает в дополнение к URL-адресу, который не работает.   -  person S.Lott    schedule 13.08.2010


Ответы (1)


Ваш шаблон не соответствует URL:

>>> import re
>>> pattern = r'^weblog/(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(P?<slug>[-\w]+)/$'
>>> url = 'weblog/2010/aug/10/wie-baue-ich-ein-weblog/'
>>> print re.match(pattern,url)
None

Это потому что у вас опечатка в шаблоне. У вас есть P?<slug>, а должно быть ?P<slug>:

>>> pattern = r'^weblog/(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$'
>>> print re.match(pattern,url)
<_sre.SRE_Match object at 0x00B274F0>
person Dave Webb    schedule 13.08.2010