2016-03-02 4 views
1

согласно инструкциям на Django 1.9 tutorial я добавил еще один файл в корневом каталоге проекта с параметрами окружающей среды -Jinja2 шаблонный не работает в в Django 1.9

from __future__ import absolute_import # Python 2 only 

from django.contrib.staticfiles.storage import staticfiles_storage 
from django.core.urlresolvers import reverse 

from jinja2 import Environment 


def environment(**options): 
    env = Environment(**options) 
    env.globals.update({ 
     'static': staticfiles_storage.url, 
     'url': reverse, 
    }) 
    return env` 

(Предоставленный загрузить соответствующий jinja2 мне пришлось переименовать файл что-то по-другому, в этом случае jinja2env.py в корне проекта)

И я обновил settings.py с новым шаблонного бэкэндом:

TEMPLATES = [ 
{ 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': [os.path.join(PROJECT_ROOT, 'templates').replace('\\','/')], 
    'APP_DIRS': True, 
    'OPTIONS': { 
     'context_processors': [ 
      'django.template.context_processors.debug', 
      'django.template.context_processors.request', 
      'django.contrib.auth.context_processors.auth', 
      'django.contrib.messages.context_processors.messages', 
     ], 
    }, 
}, 
{ 
    'BACKEND': "django.template.backends.jinja2.Jinja2", 
    'DIRS': [os.path.join(PROJECT_PATH, 'campaigns/templates').replace('\\','/')], 
    "APP_DIRS": True, 
    "OPTIONS": { 
     'environment': 'jinja2env.Environment', 
    } 
}, 

В представлении я работаю, я использую параметр using указать jinja2 шаблонизатор:

return render(request, 'jinja2/index.html', context={'projects': projects, 'counter': 0}, status=200, using='jinja2') 

Тем не менее, когда шаблон переходит к визуализации я следующие ошибки: 'static' is undefined. Очевидно, что моя установка неправильная или я не делаю что-то правильное. Шаблон начинается таким образом:

<link rel="stylesheet" type="text/css" href="{{ static('stylesheets/main.css') }}"> 

Что я делаю неправильно? Я не использую {% load static %}, так как это не шаблон Django ... так что я в недоумении.

ответ

3

Вы загружаете неправильную поставку. В вашем коде jinja2env.Environment фактически ссылается на среду по умолчанию от jinja2.Environment.

"OPTIONS": { 
    'environment': 'jinja2env.Environment', 
} 

должен быть изменен на

"OPTIONS": { 
    'environment': 'jinja2env.environment', 
} 

Обратите внимание на нижний регистр environment, который окружающая среда вы определили внутри jinja2env.py.

+0

Ничего себе. Любите эти ошибки капитализации. (Ха - не совсем. Бедные читатели с моей стороны!) Спасибо! –

0

Основываясь на ваших настройках и принятом ответе на this question, вам следует попробовать добавить контекстный процессор static.

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