0

Django 1.5.1 と django-cms 2.4.2 がインストールされています

ただし、まだ zinnia ブログと django-cms を統合していません。

ブログエントリを作成できたが、ブログエントリに移動すると

8000/en/weblog/2013/10/13/テストエントリー/

404 Page not Found が表示される

何かご意見は?

4

1 に答える 1

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')),
 )

説明:

zinnia の URL の前に cms の URL を含めると、django-cms の「スラッグ」パターンは、Zinnia のブログ エントリの URL を含む幅広い URL と一致します。

<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」変数に格納され、cms.views.detail ビュー関数の引数として (「kwargs」で) 提供されます。そして、このビューは以下を呼び出します:

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

この URI は Zinnia ブログに属しているため、cms はレンダリングに適したページを見つけられません (「Resolver404」例外が発生します)。

話の終わり。

資力:

  1. 「詳細」ビューはここにあります: cms.views
  2. django url 解決ロジックは次のとおりです。django.core.urlresolversは主に 2 つの「解決」メソッドにあります。(行: 315 *再帰、209 *非再帰)
于 2014-01-22T07:22:04.460 に答える