虽然已定义,但Django在URLConf中找不到url模式

时间:2010-08-12 20:13:56

标签: django design-patterns django-urls matching

我在浏览器中输入以下网址:

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中的

应匹配。

唯一的区别是语言的前缀,但这不会影响其他模式,所以为什么它只会影响它。 (所有urlpatter都匹配,除了上面的那个)

我的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') }),
)

问题是什么我感谢任何帮助,

最好的问候。

1 个答案:

答案 0 :(得分:3)

您的模式与网址不匹配:

>>> 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>