如何在Flask模板中包含“in-line”javascript以提高性能,但是将代码保存在组织的静态文件夹中的单独文件中?我正在寻找这样的东西。
<script>
{% include_from_static 'in-line.js' %}
</script>
使用普通include
指令和url_for
似乎无法做到这一点。如果我需要一个自定义函数,我该如何编写呢? (在另一个线程上有一个related example,但我不太了解这个代码的适应性。)
答案 0 :(得分:0)
好吧,您可以将Flask项目的根目录传递给PackageLoader
。缺点是您必须为每个文件添加前缀template
和static
文件夹。
app.py
from flask import Flask
from jinja2 import Markup, PackageLoader, Environment
app = Flask(__name__)
def include_file(name):
return Markup(loader.get_source(env, name)[0])
loader = PackageLoader(__name__, '')
env = Environment(loader=loader)
env.globals['include_file'] = include_file
@app.route('/')
def index():
return env.get_template('templates/page.html').render()
if __name__ == '__main__':
app.run()
静态/的script.js
console.log('hello world');
模板/ page.html中
<!DOCTYPE html>
<html>
<head>
<title>Title</title>
</head>
<body>
<script type="text/javascript">
{{ include_file('static/script.js') }}
</script>
</body>
</html>