在 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')
我想创建第二个 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')