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 - 不适用于特定允许的来源
Python 使用CORS跨域资源共享解决flask服务器跨域问题浏览器同源策略