2012-03-15 70 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