2016-05-23 11 views
1

Ich möchte eine zweite Jinja-Umgebung erstellen, um ein LaTeX-Dokument zu erstellen. This snippet verwendet Flask.create_jinja_environment, aber ich möchte einen benutzerdefinierten Loader verwenden: FileSystemLoader('/path/to/latex/templates'). Wie kann ich ein env wie das Snippet erstellen, aber meinen benutzerdefinierten Loader verwenden?Erstellen Sie eine zweite Jinja-Umgebung in der Flask-App

LATEX_SUBS = (
    (re.compile(r'\\'), r'\\textbackslash'), 
    (re.compile(r'([{}_#%&$])'), r'\\\1'), 
    (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 

Antwort

0

Das Snippet verwendet create_jinja_environment so dass die Vorlagen von der gleichen Stelle sind die App-Vorlagen geladen werden. Dies ist wahrscheinlich das, was Sie wollen, erstellen Sie einfach ein Verzeichnis im Vorlagenordner Ihrer App mit den LaTeX-Vorlagen.

Sie können immer noch create_jinja_environment verwenden und ersetzen Sie einfach den Lader genau wie das Schnipsel andere Attribute auf dem ENV ersetzt.

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

Danke! Ich habe Standardprobleme: Wenn ich Zugriff auf diese Umgebung in allen Flask .py-Dateien haben möchte, sollte ich 'env' zu' g' ('g.env = env') hinzufügen? – kkoommbb

+0

Nein, Sie sollten es bei Bedarf importieren. – davidism

Verwandte Themen