I’m trying to insert file into a page using Jinja 2.6 using the include
tag. This worked fine until I started using characters in the file that are reminiscent of the Jinja syntax, at which point it realized it couldn’t parse them and bombed.
Short of going though the file and escaping all characters, what can I do to tell Jinja to just include the file as is?
Advertisement
Answer
You can define a function to load the text file and render it in the template:
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()
In the template, call it like this:
{{ include_file('file.txt') }}