将静态文件直接插入Jinja模板而不解析它们

2024-04-19 21:58:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Jinja 2.6使用include标记将文件插入到页面中。直到我开始在文件中使用让人想起Jinja语法的字符,它才意识到自己无法解析它们,于是就崩溃了。

除了检查文件和转义所有字符之外,我能做什么来告诉Jinja只包括文件的原样?


Tags: 文件标记include语法页面字符jinja意识
3条回答

尝试将语法放在{% raw %} {% endraw %}中的其他文件中

如果不想编辑外部文件,可以使用jQuery: 潜水以包含内容<div id="contentoffile"></div>

并使用jquery加载文件:$("#contentoffile").load("url to file")<;<;url可以是相对的

如果你用的是烧瓶,可以这样写:

from jinja2 import Markup

...

app.jinja_env.globals['include_raw'] = lambda filename : Markup(app.jinja_loader.get_source(app.jinja_env, filename)[0])

像这样使用:

{{ include_raw('js-inline/modernizr.min.js') }}

所包含文件的路径与模板文件夹的路径相同(对于普通包含)。

您可以定义一个函数来加载文本文件并在模板中呈现它:

import jinja2

def include_file(name):
    return jinja2.Markup(loader.get_source(env, name)[0])

loader = jinja2.PackageLoader(__name__, 'templates')
env = jinja2.Environment(loader=loader)
env.globals['include_file'] = include_file

def render():
    return env.get_template('page.html').render()

if __name__ == '__main__':
    print render()

在模板中,按如下方式调用:

{{ include_file('file.txt') }}

相关问题 更多 >