如何动态选择flask中要使用的模板目录?
默认情况下,flask使用存储在“ template”目录中的模板文件:
/flaskapp /application.py
/templates
/hello.html
有什么方法可以根据登录用户动态选择模板目录?这就是我想要的目录结构:
/flaskapp /application.py
/templates (default template goes here)
/hello.html
/userdata
/user1
/template1
hello.html
/template2
hello.html
/user2
/template1
hello.html
/template2
hello.html
现在,如果我具有登录用户的用户名和用户激活的模板的名称,是否可以动态选择要加载模板文件的目录?例如,
/userdata/<username>/<activated template name>/
而不是固定的
/templates/
我要实现的目标是为我的Web应用程序提供一个类似wordpress的主题系统,用户可以在其中上传/选择其网站的主题。
回答:
也有可能覆盖Jinja加载程序并设置Jinja查找模板的路径。喜欢:
my_loader = jinja2.ChoiceLoader([
app.jinja_loader,
jinja2.FileSystemLoader([‘/flaskapp/userdata’,
‘/flaskapp/templates’]),
])
app.jinja_loader = my_loader
目录按照Jinja首先需要查找的顺序进行排列。然后,从视图中可以渲染用户特定的模板,如下所示:
render_template(‘%s/template1/hello.html’ % username)
您可以在视图中动态更改用户名的位置。当然,您也可以在那里选择要渲染的模板(1或2)。但是基本上,您真正想念的是带有自定义路径的自定义Jinja加载程序。
以上是 如何动态选择flask中要使用的模板目录? 的全部内容, 来源链接: utcz.com/qa/428063.html