【问题标题】:Implementing Django language selection form as buttons将 Django 语言选择表单实现为按钮
【发布时间】:2016-03-28 18:53:32
【问题描述】:

我想将 django 语言选择实现为一系列按钮,而不是基于下拉选择的表单。我尝试通过向按钮添加submitformactionvalue 属性来做到这一点,但它无法正常工作。

将以下输入表单实现为一系列按钮的正确方法是什么?谢谢!

来自 Django 国际化文档

{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}

<form action="{% url 'set_language' %}" method="post">{% csrf_token %}
  <input name="next" type="hidden" value="{{ redirect_to }}" />
  <select name="language">
    {% for language in languages %}
      <option value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected="selected"{% endif %}>
        {{ language.name_local }} ({{ language.code }})
      </option>
    {% endfor %}
  </select>
  <input type="submit" value="Go" />
</form>

我的按钮尝试

{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}

{% for language in languages %}
  <button type="submit" title="{{ language.code }}" formaction="{% url 'set_language' %}" value="{{ language.code }}">
    {{ language.name_local }} ({{ language.code }}) 
  </button>
{% endfor %}

【问题讨论】:

  • 由于我还不能回答我自己的问题,在看似不相关的问题中进行了更多搜索,使我找到了我自己的问题here 的答案。如果允许,我会用更多示例更新这个问题。

标签: python django forms internationalization


【解决方案1】:

以下是一种将每种语言创建为自己的隐藏表单的方法,其提交按钮可以是styled with css

如果您希望活动语言的样式不同,可以使用django if 语句来更改 css(如果它是当前语言)。

{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}

{% for language in languages %}
  <form action="{% url 'set_language' %}" method="post" id="form_{{ language.code }}" style="display:inline!important;">
  {% csrf_token %}
    <input name="next" type="hidden" value="{{ redirect_to }}" />
    <input name="language" type="hidden" value="{{ language.code }}" />
  </form>
  <button class="lang-button" type="submit" form="form_{{ language.code }}" value="Submit">[{{ language.code }}]</button>
{% endfor %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多