【问题标题】:Django: Change URL's keyword argument on current languageDjango:更改当前语言的 URL 关键字参数
【发布时间】:2023-04-01 12:05:01
【问题描述】:

我有这两个关键字参数

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 中有这个。所以有人帮助我如何实现我的目标?

【问题讨论】:

    标签: python django django-urls


    【解决方案1】:

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

    一个简单的解决方案是装饰 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')
    

    【讨论】:

    • 我正在使用 django-localeurl 但它在站点地图中显示无效 url
    • 我明白了,那为什么不为每个语言生成一个 url 呢?
    • 是的,我有这个选项,但我希望在单个 URL 中做!
    猜你喜欢
    • 2018-03-29
    • 2021-12-10
    • 2012-12-02
    • 2013-10-05
    • 2011-03-01
    • 1970-01-01
    • 2023-03-08
    • 2019-06-15
    • 2020-06-17
    相关资源
    最近更新 更多