2012-03-15 119 views
2

變更網址的關鍵字參數我有這兩個關鍵字參數Django的:在當前語言

sitemap_en = { 
    "blog_en":BlogSiteMap('en'), 
    ... 
} 

sitemap_ja = { 
    "blog_ja":BlogSiteMap('ja'), 
    ... 
} 

我想在urls.py這種情況下,

if current_language == "en": 
    sitemaps = sitemap_en 
else: 
    sitemaps = sitemap_ja 

url(r'^sitemap.xml/$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}, name='sitemap') 

我知道其他人會不會是執行,但我想在我的網址中有這個。所以任何人都可以幫助我如何實現我的目標?

回答

3

在處理任何請求之前,Url會被解析。

一個簡單的解決方案是裝飾django.contrib.sitemaps.views.sitemaps

from django.contrib.sitemaps.views import sitemap 

def locale_sitemaps(request): 
    # assuming you make a "sitemaps" dict here of {language_code: sitemap} 
    return sitemap(request, sitemaps=sitemaps[request.LANGUAGE_CODE]) 

然後,讓你的URL中使用這樣的觀點:

url(r'^sitemap.xml/$', 'views.locale_sitemaps', name='sitemap') 
+0

我使用django- localeurl,但它顯示無效的網站地圖 – Ahsan 2012-03-15 12:32:41

+0

我明白了,那麼爲什麼不生成每個lang一個url? – jpic 2012-03-15 12:33:51

+0

是的,我有這個選項,但我期待在單個URL中做! – Ahsan 2012-03-15 12:36:39