Python 通过单击引导下拉菜单中的链接,在Django中设置模板的语言

Python 通过单击引导下拉菜单中的链接,在Django中设置模板的语言,python,django,twitter-bootstrap,Python,Django,Twitter Bootstrap,在Django的文档中有一个示例,显示了用户如何选择页面的语言。他们填写并提交表格 这个例子对我很有用。然而,我想使用一个链接列表来引起这种行为。我的想法是设置下一次输入所选语言代码的值,然后提交表单。代码如下: <form name="ui" action="{% url 'set_language' %}" method="post">{% csrf_token %} <input name="next" type="hidden" value="{{ redire

在Django的文档中有一个示例,显示了用户如何选择页面的语言。他们填写并提交表格

这个例子对我很有用。然而,我想使用一个链接列表来引起这种行为。我的想法是设置下一次输入所选语言代码的值,然后提交表单。代码如下:

<form name="ui" action="{% url 'set_language' %}" method="post">{% csrf_token %}
    <input name="next" type="hidden" value="{{ redirect_to }}" />
    <a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
    {% get_current_language as LANGUAGE_CODE %}
    {% get_language_info for LANGUAGE_CODE as lang %}
    {% get_available_languages as LANGUAGES %}
    {% get_language_info_list for LANGUAGES as languages %}
    {{ lang.name_local }}
    <span class="caret"></span>
    </a>
    <ul class="dropdown-menu">
    {% for language in languages %}
        <li><a href="#" onclick="document.ui.next.value='{{ language.code}}'; document.ui.submit();">{{ language.name_local }}</a></li>                                                                    
    {% endfor %}
    </ul>
</form>

URL.py中是否有此选项?您可以尝试以下更简单的选项:

{% load i18n %}
{% get_available_languages as languages %}

{% for language in languages %}
    <li class="{% ifequal current_language language.0 %}active{% endifequal %}">
        <a href="/./{{ language.0 }}/" title="{{ language.1 }}">
            {{ language.1 }}
        </a>
    </li>
{% endfor %}

您可以尝试以下更简单的方法:

{% load i18n %}
{% get_available_languages as languages %}

{% for language in languages %}
    <li class="{% ifequal current_language language.0 %}active{% endifequal %}">
        <a href="/./{{ language.0 }}/" title="{{ language.1 }}">
            {{ language.1 }}
        </a>
    </li>
{% endfor %}

这对我来说很有用:用名称语言添加一个额外的输入元素

此外,在提交表单之前,在JS中为其分配语言代码,即document..language.value=

然后模板的一部分如下所示:

<form name="ui" action="{% url 'set_language' %}" method="post">{% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}" />
<input name="language" type="hidden"/>
<a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
{% get_current_language as LANGUAGE_CODE %}
{% get_language_info for LANGUAGE_CODE as lang %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}
{{ lang.name_local }}
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
{% for language in languages %}
    <li><a href="#" onclick="document.ui.language.value='{{ language.code}}'; document.ui.submit();">{{ language.name_local }}</a></li>                                                                    
{% endfor %}
</ul>

这对我来说很有用:用名称语言添加一个额外的输入元素

此外,在提交表单之前,在JS中为其分配语言代码,即document..language.value=

然后模板的一部分如下所示:

<form name="ui" action="{% url 'set_language' %}" method="post">{% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}" />
<input name="language" type="hidden"/>
<a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
{% get_current_language as LANGUAGE_CODE %}
{% get_language_info for LANGUAGE_CODE as lang %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}
{{ lang.name_local }}
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
{% for language in languages %}
    <li><a href="#" onclick="document.ui.language.value='{{ language.code}}'; document.ui.submit();">{{ language.name_local }}</a></li>                                                                    
{% endfor %}
</ul>

{{lang}}是如何定义的?什么是当前的语言?{%get_current_language as current_language%},对吗?@MaxLi-its在文档中:我可能遗漏了什么,但我没有看到出现变量current_language,只get_current_language。您在块{%ifequal current_language.0%}中使用它。我找到了适合我的解决方案,并将其作为答案发布。您的解决方案对我不起作用,可能取决于其他设置。无论如何,感谢合作,它让我想到了其他的想法,因此,我对它投了赞成票。{{{lang}}是如何定义的?什么是当前的语言?{%get_current_language as current_language%},对吗?@MaxLi-its在文档中:我可能遗漏了什么,但我没有看到出现变量current_language,只get_current_language。您在块{%ifequal current_language.0%}中使用它。我找到了适合我的解决方案,并将其作为答案发布。您的解决方案对我不起作用,可能取决于其他设置。无论如何,感谢你们的合作,它让我想到了其他的想法,因此,我投了赞成票。