How to dynamically select template directory to be used in flask?

后端 未结 3 1380
生来不讨喜
生来不讨喜 2020-11-30 03:06

By default flask uses template files stored in \"template\" directory :

/flaskapp
    /application.py
    /templates
        /hello.html

Is

3条回答
  •  生来不讨喜
    2020-11-30 03:32

    There is also the possibility to overwrite Jinja loader and set the paths where Jinja will look for the templates. Like:

    my_loader = jinja2.ChoiceLoader([
            app.jinja_loader,
            jinja2.FileSystemLoader(['/flaskapp/userdata', 
                                     '/flaskapp/templates']),
        ])
    app.jinja_loader = my_loader
    

    Directories are arranged in the order where Jinja needs to first start looking for it. Then from the view you can render user specific template like this:

    render_template('%s/template1/hello.html' % username)
    

    where username you can dinamically change in the view. Of course you can also there choose which template (1 or 2) to render. But basically what you really miss is this custom Jinja loader with the custom paths.

    Hope that helped or gave the ideas :)

提交回复
热议问题