django语言更改仅在重新加载后生效

django语言更改仅在重新加载后生效,django,django-templates,django-i18n,Django,Django Templates,Django I18n,在我的应用程序中,我可以通过以下方式更改语言: from django.utils.translation import LANGUAGE_SESSION_KEY # LANGUAGE_SESSION_KEY is "_language" ... def my_view(request, my_lang=en): request.session[LANGUAGE_SESSION_KEY] = my_lang ... context = {"mysession": sess

在我的应用程序中,我可以通过以下方式更改语言:

from django.utils.translation import LANGUAGE_SESSION_KEY
# LANGUAGE_SESSION_KEY is "_language"
...
def my_view(request, my_lang=en):
    request.session[LANGUAGE_SESSION_KEY] = my_lang
    ...
    context = {"mysession": session}
    return render(request, "mytemplate.html", context)
这与预期基本一致。但是,尽管会话变量设置正确,此视图的直接响应仍以前一种语言呈现。换句话说,以下模板提供了相互矛盾的输出:

{% load i18n %}
{% get_current_language as LANGUAGE_CODE %}
<b>Debug:</b>
current_language: {{ LANGUAGE_CODE }}
session_variable: {{mysession|get:"_language"}}
请注意,要访问以下划线开头的属性_语言,我必须使用自定义筛选器,请参阅

Django输出:

调试:当前_语言:en sessionvariable:de

所有{%trans…}语句都被处理为过时的语言代码内容,这很烦人。更改语言后,所使用的语言将立即生效。如果刷新页面或加载其他视图,则新语言使用正确

我理解错了什么吗? 如何在即时响应中正确设置当前的_语言。
您在会话中设置了语言代码,但实际上没有在视图中设置

from django.utils import translation
...
translation.activate(my_lang)