渲染存储在FTP服务器上的Jinja模板 [英] Render a Jinja template stored on an FTP server

查看:133
本文介绍了渲染存储在FTP服务器上的Jinja模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在FTP服务器上有一些模板,我的应用程序正在另一台服务器上运行。我可以使用 render_template 在FTP链接上呈现模板吗?

I have some templates on an FTP server, and my app is running on another server. Can I use render_template to render a template at an FTP link?

推荐答案

是的,可以在另一台服务器上使用 render_template()函数。创建一个加载器,从链接中获取远程模板。在这个例子中,我使用了一个HTTP服务器,但是您可以通过更改传递给UrlLoader构造函数的URL来使用FTP服务器。

Yes, one can use render_template() function with the template files on another server. Create a loader that gets the remote template from the link. In this example, I use an HTTP server, but you can use an FTP server by changing the URL passed to the UrlLoader constructor.

from flask import Flask, render_template
from jinja2 import BaseLoader, TemplateNotFound
from urllib import urlopen
from urlparse import urljoin


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)

app = Flask(__name__)
app.jinja_loader = UrlLoader('http://localhost:8000/')


@app.route('/')
def root():
    return render_template('hello.html')

if __name__ == "__main__":
    app.run(debug=True)

这篇关于渲染存储在FTP服务器上的Jinja模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆