Django: изменить аргумент ключевого слова URL на текущем языке - PullRequest
2 голосов
/ 15 марта 2012

У меня есть два ключевых аргумента

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

Я знаю, не будет ли еще выполнено, но я хочу, чтобы это было в моем URL. Так кто-нибудь поможет мне, как достичь моей цели?

1 Ответ

3 голосов
/ 15 марта 2012

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