小编Ste*_*ögl的帖子

Django的get_current_language总是返回"en"

在我的Django 2.0站点中,我想lang将html标记的属性设置为当前语言环境的语言.在我base.html扩展的其他模板中,我使用get_current_language以下方式

{% load i18n %}

{% get_current_language as LANGUAGE_CODE %}
<!DOCTYPE html>
<html lang="{{ LANGUAGE_CODE }}">
 ...
</html>
Run Code Online (Sandbox Code Playgroud)

该网站提供多种语言的翻译.如果我在浏览器中切换语言,我会看到正确的翻译,但该lang属性将始终包含en.

在我的settings.py

USE_I18N = True
LANGUAGE_CODE = 'en-us'
Run Code Online (Sandbox Code Playgroud)

并根据Goran的建议提供以下中间件订单

MIDDLEWARE = [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
]
Run Code Online (Sandbox Code Playgroud)

LANGUAGES设置未设置.

正如Kostadin Slavov所建议的那样,我尝试从视图中打印语言.似乎get_current_language调用了django.utils.translation.get_language,所以我在我的视图中插入了以下内容

from django.utils import translation                                        
print(translation.get_language())                                           
Run Code Online (Sandbox Code Playgroud)

它打印正确的值(例如de,在浏览器设置为德语的情况下访问视图时).

我还缺少什么?

django localization django-templates internationalization

14
推荐指数
1
解决办法
1487
查看次数

Nginx,如果没有设置,如何添加标头

如果只是没有设置,我想通过nginx添加标题(缓存控制).

在某些情况下我需要增加缓存时间(使用php),并且通过标题"说"nginx.

对不起,如果不清楚,我真是个新手)

caching header nginx http-headers

10
推荐指数
1
解决办法
5089
查看次数