Django,重定向时更改语言
Django, change language while redirecting
我已将我的 Django 应用设置为支持多种语言。
POST /i18n/setlang/
起作用并从下拉菜单中更改语言。
<form action="/i18n/setlang/" method="post" class="form-inline">
{% csrf_token %}
<input name="next" type="hidden" value="/dashboard" />
<select name="language" class="form-control" onchange="this.form.submit()">
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}" {% if request.LANGUAGE_CODE == lang.0 %} selected {% endif %}>{{ lang.1 }}</option>
{% endfor %}
</select>
</form>
在我的数据库中,我从用户名知道原籍国(用户名已预先指定)。如何在登录后自动更改语言并重定向到第一页?
例如:
return HttpResponseRedirect(reverse("dashboard", args=[lang]))
或
return HttpResponseRedirect('/dashboard?lang=pt')
这是否可以不使用任何第 3 方中间件?如果没有,您建议使用哪种中间件?
您可以在登录后明确更改语言,如下所示:
from django.utils import translation
user_language = 'en'
translation.activate(user_language)
request.session['django_language'] = user_language
activate() 只会更改线程的语言,而更改会话会使其在未来的请求中保持不变。
我已将我的 Django 应用设置为支持多种语言。
POST /i18n/setlang/
起作用并从下拉菜单中更改语言。
<form action="/i18n/setlang/" method="post" class="form-inline">
{% csrf_token %}
<input name="next" type="hidden" value="/dashboard" />
<select name="language" class="form-control" onchange="this.form.submit()">
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}" {% if request.LANGUAGE_CODE == lang.0 %} selected {% endif %}>{{ lang.1 }}</option>
{% endfor %}
</select>
</form>
在我的数据库中,我从用户名知道原籍国(用户名已预先指定)。如何在登录后自动更改语言并重定向到第一页?
例如:
return HttpResponseRedirect(reverse("dashboard", args=[lang]))
或
return HttpResponseRedirect('/dashboard?lang=pt')
这是否可以不使用任何第 3 方中间件?如果没有,您建议使用哪种中间件?
您可以在登录后明确更改语言,如下所示:
from django.utils import translation
user_language = 'en'
translation.activate(user_language)
request.session['django_language'] = user_language
activate() 只会更改线程的语言,而更改会话会使其在未来的请求中保持不变。