Flask 渲染跨服务器的html模板

Posted Flask中文论坛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask 渲染跨服务器的html模板相关的知识,希望对你有一定的参考价值。

从之前的文章中我们知道,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文件了。



以上是关于Flask 渲染跨服务器的html模板的主要内容,如果未能解决你的问题,请参考以下文章

Python Flask 跨站点 HTTP POST - 不适用于特定允许的来源

为啥 Flask-Cors 在生产中没有检测到我的跨域域?

Python 使用CORS跨域资源共享解决flask服务器跨域问题浏览器同源策略

不需要web服务器,如何构建一个可以内部跨域的http服务(Vue+Flask)

flask模板

flask关于跨域的问题