Django 1.8 不使用 Jinja2 模板引擎

Django 1.8 not using Jinja2 template engine

我已按照有关将 jinja2 与 django1.8 一起使用的说明进行操作。 --->

#settings.py

TEMPLATES = [
    {

        'BACKEND': 'django.template.backends.jinja2.Jinja2',
        'DIRS': [
            normpath(join(DJANGO_ROOT, 'templates/jinja2')),
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'environment': 'kuyuweb_dj_1_8.jinja2.environment',
        },
    },
    {

        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.contrib.auth.context_processors.auth',
                'django.template.context_processors.debug',
                'django.template.context_processors.i18n',
                'django.template.context_processors.media',
                'django.template.context_processors.static',
                'django.template.context_processors.tz',
                'django.contrib.messages.context_processors.messages',
                'django.core.context_processors.request',
            ],
        },
    },
]

我有一个包含环境的 .py 文件 -->

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

在我的应用程序文件夹中有 templates/jinja2 文件夹。 我创建了一个简单的视图:

def home(request):

    works = Work.objects.filter(publish=True).order_by('-created_at')[:8]

    return render(request, 'jinja2/home.html', {'works':works })

但是例如,当我尝试将 jinja2 模板标签用作 {{ loop.index }} 时,它不起作用。 {{ forloop.counter }} 仍在工作。

有什么想念的吗?

您应用的神社模板应该在 yourapp/jinja2,而不是 yourapp/templates/jinja2

如果模板位于 yourapp/jinja2/home.html,那么您的 render 行应该是

return render(request, 'home.html', {'works':works })