2012-11-08 80 views
1

頁我想我已經發表在我的Django-CMS應用程序的所有頁面的列表,但我似乎無法得到它呈現特定語言的URL。的Django-CMS絕對URL到

在我的設置

我指定:

LANGUAGES = [ 
    ('sv', 'Svenska'), 
    ('en', 'English'), 
] 

我去到管理網站,我創建聯繫人頁面(這不是現場入戶),並在不同的語言設置不同的蛞蝓,「接觸例如「-sv」和「contact-en」。

然後我有得到一個頁面

from cms.models import Page 
page = Page.objects.published()[1] 
print 'swe:', page.get_absolute_url(language='sv') 
print 'eng:', page.get_absolute_url(language='en') 
視圖

然後我得到這個輸出:

swe: /contact-en/ 
eng: /contact-en/ 

當我預計SWE-網址是/ SV /接觸-SV/

我不需要langage前綴的路徑,我可以將其前綴到路徑,但我需要特定於語言的路徑。

+0

您是否設法解決此問題?我遇到了同樣的問題... – sogeking

回答

0

我敢打賭,有一個更好的方式來做到這一點,但通過頁面對象上的標題,現在我循環。

for title in page.title_set.all(): 
    print title.language, title.slug 

它的工作原理,但我不喜歡它... ...

2

我可以爲您提供沒有更好的解決辦法,而不是等到2.4版本將使用Django的內置i18n_urlpatterns來處理這一點,這應該解決你的問題,現在,你的答案是唯一的出路。

0

也許你可以使用站點地圖策略。 django cms有它自己的網站地圖類,運行此代碼:

class CMSSitemap(Sitemap): 
    changefreq = "monthly" 
    priority = 0.5 

    def items(self): 
     all_titles = Title.objects.public().filter(
      Q(redirect='') | Q(redirect__isnull=True), 
      page__login_required=False, 
      page__site=Site.objects.get_current(), 
     ).order_by('page__path') 
     return all_titles