百日草博客条目显示404页面未找到

时间:2013-10-14 04:28:59

标签: django django-cms zinnia

我安装了Django 1.5.1和django-cms 2.4.2

但是我还没有整合zinnia blog和django-cms。

我能够创建一个博客条目但是在转到博客条目时

8000 / EN /博客/十分之二千零十三/ 13 /测试条目/

我收到了404页面未找到

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

可能的原因: urls.py中的urlpatterns包含的顺序。 Django-Cms设计缺乏。

修复:在zinnia.urls之后输入cms.urls:

 # patterns or i18n_patterns here.
 urlpatterns = i18n_patterns('',                                                                                                                                           
     url(r'^admin/', include(admin.site.urls)),                                                                                                                            
     url(r'^blog/', include('zinnia.urls')),                                                                                                                               
     url(r'^comments/', include('django.contrib.comments.urls')),                                                                                                          
     url(r'^', include('cms.urls')),
 )

<强>解释

如果您在百日草网址之前添加了cms网址,则django-cms“slug”模式会匹配包括百日草博客条目网址在内的各种网址:

<RegexURLPattern pages-details-by-slug ^(?P<slug>[0-9A-Za-z-_.//]+)/$>

作为一个例子,它将匹配:“blog / 2014/01/20 / test-article-about-something /”

在匹配为django-cms:pages-details-by-slug之后,整个URI存储在“slug”变量中,并作为参数(在“kwargs”中)提供给cms.views.detail视图函数。这个观点将会调用:

cms.utils.page_resolver import get_page_from_request(request, use_path=slug)

并且cms将找不到(并将引发“Resolver404”异常)任何合适的呈现页面,因为此URI属于Zinnia博客。

故事结束。

资源:

  1. “详情”视图可在此处找到:cms.views
  2. django url解析逻辑在这里:django.core.urlresolvers主要在两个“解析”方法中。 (行:315 *递归,209 *非递归)