gpt4 book ai didi

django - 使用i18n_patterns时,如何在没有语言代码的情况下反转url

转载 作者:行者123 更新时间:2023-12-02 01:42:31 24 4
gpt4 key购买 nike

我正在使用 i18n_patterns但我想用 reverse在 url 中创建一个没有语言的页面链接(这样用户将根据 cookie 和标题等重定向)。

我试过了

from django.utils.translation import activate, deactivate, get_language
current_lang = get_language()
deactivate()
url = reverse(things)
activate(current_lang)

这适用于使用 activate(target_lang) 获取其他语言版本,但如果我 deactivate我只是获得默认语言的网址( /en/account/ 但我想要 /account/ )。

我已经认为获取替代语言版本过于复杂,但我根本无法管理。任何提示? (无需从 url 手动剥离 LANGUAGE_CODE)

更新:我也试过
from django.core.urlresolvers import get_resolver
get_resolver(None).reverse(*args, **kwargs)

但得到 NoReverseMatch

最佳答案

我认为最简单的方法是让 Django 用语言前缀解析 URL,然后删除语言前缀。

您可以编写以下函数:

import re
from django.core.urlresolvers import reverse

def reverse_no_i18n(viewname, *args, **kwargs):
result = reverse(viewname, *args, **kwargs)
m = re.match(r'(/[^/]*)(/.*$)', result)
return m.groups()[1]

现在,您可以在代码的任何位置执行以下操作:
from myproject.utils import reverse_no_i18n

def my_view(request):
return HttpResponseRedirect(reverse_no_i18n('my_view_name'))

您可能还想创建一个自定义 {% url %}调用您的自定义函数的模板标签。

关于django - 使用i18n_patterns时,如何在没有语言代码的情况下反转url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27680748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com