python - 将静态文件按字面意思插入 Jinja 模板而不解析它们

标签 python jinja2

我正在尝试使用 Jinja 2.6 使用 include 标记将文件插入到页面中。这工作得很好,直到我开始在文件中使用让人联想到 Jinja 语法的字符,此时它意识到它无法解析它们并被轰炸。

没有浏览文件并转义所有字符,我能做些什么来告诉 Jinja 只包含文件原样?

最佳答案

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

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') }}

关于python - 将静态文件按字面意思插入 Jinja 模板而不解析它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9767585/

相关文章:

python - 从 python 脚本中获得 bash 自动完成功能

Python BeautifulSoup 循环

jinja2:渲染模板而不扩展

python - 在flask中只调用一次template_filter函数?

python - 如何从 Jinja2 上下文过滤器访问 For 变量

python - 当数据没有大/inf/nan 值时,sklearn 的 yeo-johnson PowerTransformer 抛出 "ValueError: Input contains infinity"

python - 如何将具有多个条件的函数应用于pandas dataframe?

python - 用python编写的端口扫描仪无法正常显示输出

javascript - 如何从呈现的 HTML 模板呈现 JS 模板?

python - 如何在 Python 中像 ERB 一样进行模板化?