不能在页面上使用 Jinja 元素

Posted

技术标签:

【中文标题】不能在页面上使用 Jinja 元素【英文标题】:Can't use Jinja elements on Page 【发布时间】:2017-11-20 07:42:19 【问题描述】:

我正在研究 Django 和 Jinja 模板的新手。我可以从上下文中打印变量,但不能使用 Jinja 的其他功能。

当我在页面上执行 1+1 时。它显示:

无法解析余数:来自 '1+1' 的 '+1'

我正在尝试生成一个随机编号。通过 范围(1, 51) |随机 ,由this 回答。但它会抛出错误:

无法解析某些字符:范围|(1, 51)| |随机的

在 settings.py 中:

TEMPLATES = [

    'BACKEND': 'django.template.backends.jinja2.Jinja2',
    'DIRS': [],
    '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',
        ],
    ,
,
]

【问题讨论】:

【参考方案1】:

问题是您没有在 Django 项目中激活 Jinja2 模板。请正确设置模板引擎。

TEMPLATES = [
    
         'BACKEND': 'django.template.backends.jinja2.Jinja2',
         ...

【讨论】:

新的 Django 配置。删除了支持的行。现在我得到“__init__() 有一个意外的关键字参数'context_processors'”。 如果您在问题中包含了您的漏洞 Django 设置,那么这将有助于我们调试更多...!还有你的 Django 版本是什么... 我使用的是 Django 1.10 版,将更新有问题的代码。【参考方案2】:
TEMPLATES = [
    'BACKEND': 'django.template.backends.jinja2.Jinja2',
    'BACKEND': 'django.template.backends.django.DjangoTemplates', # remove this line
    'DIRS': [],
    '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',
        ],
    ,
]

在第 3 行中,您使用 Django 模板引擎覆盖键 BACKEND

【讨论】:

删除了支持的行。现在我得到“__init__() 有一个意外的关键字参数 'context_processors'”。 Django 的版本是多少? Django 版本为 1.10 如果你不需要context_processors你可以使用OPTIONS: ,但是如果你需要它们,那么你需要升级到1.11版本。 docs.djangoproject.com/en/1.11/topics/templates/…

以上是关于不能在页面上使用 Jinja 元素的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像添加到 jinja html 页面

第四章 Jinja2模版

jQuery 检查某个元素在页面上是否存在实例代码

解决:iphone iframe内的页面不能滑动问题

使用 Jinja 进行 Flask 模板流式传输

Flask模板