1. 程式人生 > >Flask 渲染跨伺服器的html模板

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檔案了。