版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014094101/article/details/82711177
从之前的文章中我们知道,Flask渲染html模板是通过render_template这个函数来进行读取渲染的,默认读取的路径是在应用的templates文件夹,如果想读取应用下其他文件夹的模板文件,可以通过在蓝图下设置template_folder参数来控制读取的模板路径,但是,假如我们的模板文件存放在一个ftp或者http服务器上,该怎么通过render_template来读取到那个模板文件,这就是今天本文要介绍的内容。
想要实现这个功能,就需要我们重写一个jinja2读取模板文件的类,jinjia2这个模块负责读取模板文件的代码在loaders.py这个文件中,我们将根据BaseLoader这个类创建一个支持读取远程模板的构造函数。
jinja loader
class UrlLoader(BaseLoader):
def __init__(self, url_prefix):
self.url_prefix = url_prefix
def get_source(self, environment, template):
url = urljoin(self.url_prefix, template)
try:
t = urlopen(url)
if t.getcode() is None or t.getcode() == 200:
return t.read().decode('utf-8'), None, None
except IOError:
pass
raise TemplateNotFound(template)
在对应的蓝图中,设置jinja_loader为需要读取的模板文件的远程目录
@admin.route("/")
def index():
admin.jinja_loader = UrlLoader("你的模板路径")
return render_template("index.html")
这样,就能读取到远程模板路径下的index.html文件了。