Flask 渲染跨服务器的html模板

版权声明:本文为博主原创文章,未经博主允许不得转载。 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文件了。

猜你喜欢

转载自blog.csdn.net/u014094101/article/details/82711177