Max*_* Li 3 python django twitter-bootstrap
在 Django 的文档中,有一个示例展示了用户如何选择页面的语言。他们填写并提交表格。
这个例子对我有用。但是,我想使用带有链接列表的Bootstrap 下拉 菜单来导致此行为。我的想法是将“下一个”输入的值设置为所选语言的代码并提交表单。这是代码:
<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>
Run Code Online (Sandbox Code Playgroud)
它生成以下 html 代码(我省略了 csrf 令牌,但它在那里):
<form name="ui" action="/i18n/setlang/" method="post">
<input name="next" type="hidden" value="" />
<a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">English<span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#" onclick="document.ui.next.value='en'; document.ui.submit();">English</a></li>
<li><a href="#" onclick="document.uiLang.next.value='de'; document.uiLang.submit();">German</a>
</li>
</ul>
</form>
Run Code Online (Sandbox Code Playgroud)
然而,这会导致(选择带有“de”语言代码的德语),请求 URL http://127.0.0.1:8000/i18n/setlang/de出现 404 错误(并且,不要没有为什么,请求方法“GET ”)。
出了什么问题以及如何解决问题?
ps 线
url(r'^i18n/', include('django.conf.urls.i18n')),
Run Code Online (Sandbox Code Playgroud)
urls.py 中有吗
这对我有用:添加一个名为“语言”的附加输入元素
另外,在提交表单之前,在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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3253 次 |
| 最近记录: |