2016-12-05 1 views
6

Я перехожу проект Django 1.10 и имеет код, подобный следующему:Как включить TEMPLATE_CONTEXT_PROCESSORS по умолчанию в установке новых шаблонов в Django 1,10

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP 

TEMPLATE_CONTEXT_PROCESSORS = TCP + (
    'django.template.context_processors.debug', 
    'django.template.context_processors.i18n', 
    'django.template.context_processors.media', 
    'django.template.context_processors.static', 
    'django.contrib.auth.context_processors.auth', 
    'django.contrib.messages.context_processors.messages', 
    'django.template.context_processors.request', 
) 

Насколько я могу сказать, что это было общий шаблон при использовании предыдущих версий Django для обеспечения использования стандартных процессоров контекста.

В Django 1.10 TEMPLATE_CONTEXT_PROCESSORS был удален в пользу установки TEMPLATES которое теперь должно быть определенно что-то вроде этого:

TEMPLATES = [ 
    { 
     ..., 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       ... 
      ], 
     }, 
    }, 
] 

Как следует установка TEMPLATES быть определена правильно сопрягать поведение первого образца кода, т.е. гарантировать, что стандартные процессоры контекста всегда включены? Должен ли я просто вручную включать все, что было в django.conf.global_settings? Есть ли в Django 1.10 значения по умолчанию? Есть ли какие-либо новые процессоры контекста, которые, вероятно, должны быть включены по умолчанию?

ответ

0

Распаковка TCP до того контекста по умолчанию процессоров при работе на питон 3.

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP 

# Python 3.6 
TEMPLATES = [ 
    { 
     ..., 
     'OPTIONS': { 
      'context_processors': [ 
       *TCP, 
       'django.template.context_processors.debug', 
       ... 
      ], 
     }, 
    }, 
] 

На меньших версиях

для одной конфигурации шаблона:

TEMPLATE = { 
     ..., 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       ... 
      ], 
     }, 
    } 

TEMPLATE['OPTIONS']['context_processors'] = (
    TCP + TEMPLATE['OPTIONS']['context_processors']) 

TEMPLATES = [TEMPLATE, ] 

для нескольких шаблонов конфигурации:

TEMPLATES = [...] 

for template in TEMPLATES: 
    template['OPTIONS']['context_processors'] = (
     TCP + template['OPTIONS']['context_processors']) 
0

Вопрос: «Как должна быть определена настройка TEMPLATES, чтобы правильно соответствовать поведению первого образца кода, т. Е. Гарантировать, что стандартные процессоры контекста всегда включены? "

Мой ответ в аналогичной ситуации состоял в том, чтобы создать каталог-заглушку и запустить в нем« django-admin startproject foo ». Затем я рассмотрел foo/foo/settings.py, чтобы увидеть сгенерированное значение TEMPLATES.

Это может не ответить на каждый вопрос о том, как установить TEMPLATES, но он отвечает на ваш вопрос, касающийся содержимого по умолчанию. ШАБЛОНЫ.

 Смежные вопросы

  • Нет связанных вопросов^_^