内部化设置语言重定向视图。如何重定向到同一页面?

2024-10-08 19:27:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个当前重定向到索引页的表单:

    {% for lang in LANGUAGES %}
        <form name="setLang{{ lang.1 }}" action="/i18n/setlang/" method="post">
            {% csrf_token %}
            <input name="next" type="hidden" value="/"/>
            <input type="image" name="language" src="/static/img/{{ lang.0 }}.png" alt="{{ lang.1 }}" value="{{ lang.0 }}"/>
            <a href="/" onclick="document.setLang{{ lang.1 }}.submit();return false;"></a>
        </form>
    {% endfor %}

如何使其重定向到同一页?在


Tags: nameinform表单langforinputvalue
3条回答

你需要的是一种获取当前路径的方法,但是要简单——不需要前导语言代码。假设Django会自动将用户重定向到正确的URL。在

我写了一个简单的函数,从给定的路径中去掉当前的语言。它基于django.core.urlresolvers.resolve如何处理路径中的语言代码,因此应该非常可靠:

from django.utils.translation import get_language
import re

def strip_lang(path):
    pattern = '^(/%s)/' % get_language()
    match = re.search(pattern, path)
    if match is None:
        return path
    return path[match.end(1):]

您可以在视图中使用它将无语言路径传递到模板:

^{pr2}$

然后在模板中使用它:

^{3}$

或者,您可以轻松地make the function into a template filter并直接在模板中使用它:

<input name="next" type="hidden" value="{{ request.path|strip_lang }}"/>

我不太确定我是否理解这个问题,但我相信你可以用这种方法。在

urlpatterns = patterns('',
(r'^blablabla/(?P<language>\w{2})/categories/$', views.my_view),

然后基于language扩展页面

<input name="next" type="hidden" value="{{ request.path }}"/>

相关问题 更多 >

    热门问题