Django — доступ к мета-данным запроса из производства

Я пытаюсь отправить клиенту список дат и времени с помощью JSON, отформатированного как его локаль.

Таким образом, основная проблема на самом деле заключается в попытке получить локаль клиента.

Я попытался использовать request.META['LC_TIME'] (который, кажется, является предпочтительным языком клиента для даты и времени)

Этот ключ находится здесь в разработке, но не в производстве.

KeyError: «LC_TIME»

Как это можно объяснить? Я на правильном пути?


person Pierre de LESPINAY    schedule 29.05.2012    source источник
comment
У w3c есть хороший ответ на связанный вопрос. хорошая идея использовать заголовок HTTP Accept-Language для определения локали пользователя? Надеюсь, эта ссылка будет полезной.   -  person jhonkola    schedule 29.05.2012
comment
Эта ссылка предлагает не полагаться исключительно на настройки локалей пользовательского агента для определения настроек сайта. Я полностью согласен с этим, но его следует использовать для поведения по умолчанию (поскольку пользователь не выбрал язык на сайте). Это также то, что я пытаюсь сделать   -  person Pierre de LESPINAY    schedule 31.05.2012


Ответы (1)


Во-первых, давайте определим, что вы имеете в виду под «производственной средой». В среде DEV браузер напрямую подключается к веб-серверу Django, и все заголовки HTTP отправляются прямо на него. В PRODUCTION у вас обычно есть прокси. Это может быть nginx или другое подобное программное обеспечение. Их основное назначение — перенаправить, при этом выполняя некоторые проверки. Вы должны проверить в своей ПРОДУКЦИОННОЙ среде, какова фактическая настройка прокси-сервера (если есть), и удаляет ли он какой-либо HTTP-заголовок, отправленный от клиента (что кажется действительной причиной ошибки, которую вы получаете).

Помимо проблем с конфигурацией, рекомендуется использовать значение по умолчанию:

user_lc_time = request.META.get('LC_TIME', default_lc_time)
person Community    schedule 09.06.2012