在 Flask 应用程序中创建第二个 Jinja 环境

Create second Jinja environmnt in Flask app

我想创建第二个 Jinja 环境来生成 LaTeX 文档。 This snippet uses Flask.create_jinja_environment,但我想使用自定义加载器:FileSystemLoader('/path/to/latex/templates')。我如何创建一个像代码片段一样的环境但使用我的自定义加载器?

LATEX_SUBS = (
    (re.compile(r'\'), r'\textbackslash'),
    (re.compile(r'([{}_#%&$])'), r'\'),
    (re.compile(r'~'), r'\~{}'),
    (re.compile(r'\^'), r'\^{}'),
    (re.compile(r'"'), r"''"),
    (re.compile(r'\.\.\.+'), r'\ldots'),
)

def escape_tex(value):
    newval = value
    for pattern, replacement in LATEX_SUBS:
        newval = pattern.sub(replacement, newval)
    return newval

texenv = app.create_jinja_environment()
texenv.block_start_string = '((*'
texenv.block_end_string = '*))'
texenv.variable_start_string = '((('
texenv.variable_end_string = ')))'
texenv.comment_start_string = '((='
texenv.comment_end_string = '=))'
texenv.filters['escape_tex'] = escape_tex

该代码段使用 create_jinja_environment,以便从应用模板所在的同一位置加载模板。这很可能是您想要的,只需在您的应用程序的模板文件夹中使用 LaTeX 模板创建一个目录。

您仍然可以使用 create_jinja_environment,只需替换加载程序,就像代码片段替换环境中的其他属性一样。

texenv = app.create_jinja_environment()
texenv.loader = FileSystemLoader('/path/to/latex/templates')