Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django开关语言,具有i18n模式和普通url_模式_Python_Django_Python 2.7_Internationalization_Django I18n - Fatal编程技术网

Python Django开关语言,具有i18n模式和普通url_模式

Python Django开关语言,具有i18n模式和普通url_模式,python,django,python-2.7,internationalization,django-i18n,Python,Django,Python 2.7,Internationalization,Django I18n,我必须为一个应用程序做切换语言,这个应用程序有一些i18n模式的url,比如所有我们想用前缀翻译的页面,以便有好的SEO,以及其他我们不想在url中有前缀的页面 所以我把这两种模式分开,直到一切都好了,当我在做表单来处理switch语言时,我只面临以下问题: 这是我的表格: <form action="{% url 'set_language' %}" method="POST" class="langform" style="display:none;"> {% csrf_toke

我必须为一个应用程序做切换语言,这个应用程序有一些i18n模式的url,比如所有我们想用前缀翻译的页面,以便有好的SEO,以及其他我们不想在url中有前缀的页面

所以我把这两种模式分开,直到一切都好了,当我在做表单来处理switch语言时,我只面临以下问题:

这是我的表格:

<form action="{% url 'set_language' %}" method="POST" class="langform" style="display:none;">
{% csrf_token %}
<input name="next" type="hidden" value="{{ request.get_full_path|strip_lang }}" />
<input name="language" id="language" type="hidden" value="" />
</form>
此筛选器的目标是监视url是否具有语言前缀。如果是,则将其删除,以便在下一个值中仅包含不带前缀的url

这个过滤器的输出是这样的:如果我们在/fr/pages/default,它将是/pages/default/

我点击了切换语言,但没有任何效果。它仍然是同一种语言。所以我删除了一条斜线,但它是404,因为它不是正确的路径

我能做些什么来管理我拥有的两种URL??一个有URL前缀,一个没有

在某些情况下,这种语言很容易被激活


提前感谢

好的,所以我设法让它工作了,我只需要在我的链接中添加{%language lang_code%}

现在我有了我的URL,它正在使用一个通用的下一个值

<ul class="lang-switch">
            {% get_language_info_list for LANGUAGES as languages %}
              {% for language in languages %}
              {% language lang_code %}
              <li><a href="#" rel="{{ language.code }}">{{ language.code|upper }}</a></li>
              {% endlanguage %}
              {% endfor %}
        </ul>
对我有用

<ul class="lang-switch">
            {% get_language_info_list for LANGUAGES as languages %}
              {% for language in languages %}
              {% language lang_code %}
              <li><a href="#" rel="{{ language.code }}">{{ language.code|upper }}</a></li>
              {% endlanguage %}
              {% endfor %}
        </ul>
  $('.lang-switch li a').click(function (e) {
e.preventDefault;
var lang = $(this).attr('rel');
$('.langform #language').val(lang);
$('.langform').submit();
});
@register.filter(name="strip_lang")
def strip_lang(value):
    lang = get_language()
    return value.replace('/{0}/'.format(lang), '/')