Skip to main content
 首页 » 编程设计

python之将 Django 语言选择表单实现为按钮

2024年08月23日26lidabo

我想将 Django 语言选择实现为一系列按钮,而不是基于下拉选择的表单。我尝试通过向按钮添加 submit、formaction 和 value 属性来实现此目的,但它无法正常工作。

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

来自 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 %} 

请您参考如下方法:

以下是一种方法,将每种语言创建为自己的隐藏表单,并带有一个可以是 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 %}