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 })
我已按照有关将 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 })