2012-02-04 62 views
0

我正在玩django-cms,我想創建一個應用程序掛鉤到現有的應用程序。如果我選擇顯示應用程序鉤子的頁面不是主頁,這很好。django-cms應用程序掛鉤在主頁錯誤

這是我爲我的應用程序urls.py說我在掛鉤:

from django.conf.urls.defaults import patterns, include, url 

urlpatterns = patterns('films.views', 
    url(r'^$', 'index'), 
    url(r'^(?P<film_id>\d+)/$', 'detail'), 
) 

的cms_app.py如下:

from cms.app_base import CMSApp 
from cms.apphook_pool import apphook_pool 
from django.utils.translation import ugettext_lazy as _ 

class FilmApphook(CMSApp): 
    name = _("Film Apphook") 
    urls = ["films.urls"] 

apphook_pool.register(FilmApphook) 

我的URL:

/ (<- set to have the slug home, but django-cms doesn't seem to serve it at /home if it's the startpage) 
/news 
/... 

當我設置主頁有應用程序鉤子,它呈現我的films.views的索引,買我得到一個404去任何細節ac蒸發散。

/ <- correctly renders films.index 
/home <- 404 
/home/1 <- 404 
/1 <- 404 

如果我更改應用程序掛機得下新聞代替,一切正常,(或者,如果我再拍頁面的主頁)。

/news <- correctly renders films.index 
/news/1 <- correctly renders films.detail 

這個問題似乎是Django的CMS忽略了散熱片實現的啓動頁,反正是有解決此問題?

我也許應該提到,我已經嘗試設置URL重寫這一輪的工作,然後邊/家庭供應,/家/ 1還是給出了一個404

回答

1

這是一個有點狡猾的解決方法,但我可以爲它今天生活。我基本上將一個子頁面添加到/ home named/films,確保它不在導航中,並在那裏添加app-hook。

家裏/假兒童頁面沒有他們自己的內容,所以這就是爲什麼我可以忍受它,我留下了我想要的網址。

/ <- films.views.index 
/films/1 <- films.views.details/1 
+0

謝謝你給這個答案。對於所有意圖和目的它都有效。唯一的缺點是您在管理員中看到不必要的頁面。我設法通過在頁面上設置reverse_id來獲得子頁面的slu and,並且{%page_attribute「slug」'myReverseId'%}。 – thnee 2012-06-06 20:55:55

0

這可能與你的Django-CMS的版本中的錯誤:

https://github.com/divio/django-cms/issues/47

+0

我正在運行2.2,它已經修復了這個bug。應用程序鉤子工作 - ish(即索引工作正常),只是url路由是擰緊的。 – 2012-02-04 16:59:58