从 Jinja 模板生成静态页面并使用 Flask 提供它

mud*_*ish 3 python jinja2 flask

我想创建一个一旦生成就保持静态的页面,这样我的服务器就不会浪费资源来重新生成内容。我知道记忆,但想知道 Flask 是否为此提供了内置或不同的方法。

dav*_*ism 5

render_template产生一个字符串。字符串可以保存到文件中。Flask 可以提供文件服务

# generate the page at some point
import os
out = render_template('page.html', one=2, cat='>dog')
with open(os.path.join(app.instance_path, 'page.html') as f:
    f.write(out)

# serve it some other time
from flask import send_from_directory
return send_from_directory(app.instance_path, 'page.html')
Run Code Online (Sandbox Code Playgroud)

此示例只是将文件放在实例文件夹中(确保首先存在)并硬编码文件名。在您的实际应用程序中,我假设您知道要保存文件的位置以及要调用它们的名称。

如果您发现自己经常这样做,Flask-Cache将是更好的选择,因为它可以为您处理存储和加载缓存数据,并且可以保存到更高效的后端(或仍然是文件系统)。