Skip to main content
 首页 » 编程设计

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

2024年08月30日26bjzhanghao

我有这两个关键字参数

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

我知道 else 是否不会被执行,但我想在我的 url 中包含它。所以有人帮助我如何实现我的目标吗?

请您参考如下方法:

在处理任何请求之前解析 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 以使用此 View :

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