【问题标题】:I can't use basic expression of jinja2 in the template with django 1.9我无法在 django 1.9 的模板中使用 jinja2 的基本表达式
【发布时间】:2016-11-05 03:25:42
【问题描述】:

我在使用 django 1.9 和 jinja2,我安装了模块 django-jinja 并且我很好地加载了模板,但是我不能在模板中使用 jinja2 的基本过滤器,我不能使用任何基本的表达式神社2。 当我尝试使用 jinja2 的一些基本表达式时,我得到了 TemplateSyntaxError。

这是我使用 jinja2 的 setting.py:

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 / 无法解析余数:'('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 %}

提前感谢您的帮助...

【问题讨论】:

    标签: django python-3.x jinja2 django-1.9


    【解决方案1】:

    您已经定义了一个完整的设置字典,但实际上并没有将它分配给任何东西。它需要被称为TEMPLATES - 请参阅the settings docs

    请注意,我不确定您为什么要安装第三方库,Django 1.9 包含 Jinja2 模板后端。

    【讨论】:

    • 是的,已经定义好了!一个错误。
    猜你喜欢
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    相关资源
    最近更新 更多