我在浏览器中输入以下网址:
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看起来像这样:
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') }),
)
问题是什么我感谢任何帮助,
最好的问候。
答案 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>