我不能在 django 1.9 的模板中使用 jinja2 的基本表达式
I can't use basic expression of jinja2 in the template with django 1.9
我正在使用带有 jinja2 的 django 1.9,我安装了模块 django-jinja 并且我很好地加载了模板,但是我不能在模板中使用 jinja2 的基本过滤器,我不能使用任何基本的过滤器jinja2 的表达。
当我尝试使用 jinja2 的一些基本表达式时,我得到了 TemplateSyntaxError。
这是我的 setting.py 和 jinja2:
INSTALLED_APPS = [
"django_jinja",
]
from django_jinja.builtins import DEFAULT_EXTENSIONS
JINJA2_MUTE_URLRESOLVE_EXCEPTIONS = True
TEMPLATES = [
{
"BACKEND": "django_jinja.backend.Jinja2",
"NAME": "jinja2",
'DIRS': [
os.path.join(PROJECT_DIR, 'templates/jinja2'),
],
"APP_DIRS": True,
"OPTIONS": {
"debug": True,
'environment': 'MyApp.jinja2.environment',
"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",
],
"extensions": DEFAULT_EXTENSIONS + [
'wagtail.wagtailcore.jinja2tags.core',
'wagtail.wagtailadmin.jinja2tags.userbar',
'wagtail.wagtailimages.jinja2tags.images',
"django_jinja.builtins.extensions.DjangoExtraFiltersExtension",
]
}
},
]
我的 url.py 正在加载模板...
from django_jinja.views.generic.list import ListView
urlpatterns = [
url(r'^$', ListView.as_view(
model=Items,
queryset=Items.objects.all(),
context_object_name='items',
template_name='jinja2/index.jinja'
)),
]
我的jinja2.py文件
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
我的 index.jinja 这个模板给我带来了这个错误:TemplateSyntaxError at / Could not parse the remainder: '('odd', 'even')' from 'loop.cycle('odd', 'even')'
{% extends 'jinja2/b4.jinja' %}
{% block content %}
<ol>
{% for item in items %}
<li class="{{ loop.cycle('odd', 'even') }}"><a href="#">{{ item.title|striptags }}</a></li>
{% endfor %}
</ol>
{% endblock %}
在此先感谢您的帮助...
您已经定义了整个设置字典,但您实际上还没有将其分配给任何东西。它需要被称为 TEMPLATES
- 请参阅 the settings docs。
请注意,我不确定您为什么要安装第三方库,Django 1.9 包含一个 Jinja2 模板后端。
我正在使用带有 jinja2 的 django 1.9,我安装了模块 django-jinja 并且我很好地加载了模板,但是我不能在模板中使用 jinja2 的基本过滤器,我不能使用任何基本的过滤器jinja2 的表达。 当我尝试使用 jinja2 的一些基本表达式时,我得到了 TemplateSyntaxError。
这是我的 setting.py 和 jinja2:
INSTALLED_APPS = [
"django_jinja",
]
from django_jinja.builtins import DEFAULT_EXTENSIONS
JINJA2_MUTE_URLRESOLVE_EXCEPTIONS = True
TEMPLATES = [
{
"BACKEND": "django_jinja.backend.Jinja2",
"NAME": "jinja2",
'DIRS': [
os.path.join(PROJECT_DIR, 'templates/jinja2'),
],
"APP_DIRS": True,
"OPTIONS": {
"debug": True,
'environment': 'MyApp.jinja2.environment',
"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",
],
"extensions": DEFAULT_EXTENSIONS + [
'wagtail.wagtailcore.jinja2tags.core',
'wagtail.wagtailadmin.jinja2tags.userbar',
'wagtail.wagtailimages.jinja2tags.images',
"django_jinja.builtins.extensions.DjangoExtraFiltersExtension",
]
}
},
]
我的 url.py 正在加载模板...
from django_jinja.views.generic.list import ListView
urlpatterns = [
url(r'^$', ListView.as_view(
model=Items,
queryset=Items.objects.all(),
context_object_name='items',
template_name='jinja2/index.jinja'
)),
]
我的jinja2.py文件
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
我的 index.jinja 这个模板给我带来了这个错误:TemplateSyntaxError at / Could not parse the remainder: '('odd', 'even')' from 'loop.cycle('odd', 'even')'
{% extends 'jinja2/b4.jinja' %}
{% block content %}
<ol>
{% for item in items %}
<li class="{{ loop.cycle('odd', 'even') }}"><a href="#">{{ item.title|striptags }}</a></li>
{% endfor %}
</ol>
{% endblock %}
在此先感谢您的帮助...
您已经定义了整个设置字典,但您实际上还没有将其分配给任何东西。它需要被称为 TEMPLATES
- 请参阅 the settings docs。
请注意,我不确定您为什么要安装第三方库,Django 1.9 包含一个 Jinja2 模板后端。