Django:更改当前语言的URL关键字参数

时间:2012-03-15 11:20:08

标签: python django django-urls

我有这两个关键字参数

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

我知道如果其他人不会被执行,但我希望在我的网址中有这个。那么有谁帮助我如何实现我的目标?

1 个答案:

答案 0 :(得分:3)

在处理任何请求之前解析网址。

一个简单的解决方案是装饰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(r'^sitemap.xml/$', 'views.locale_sitemaps', name='sitemap')