import os
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates'))
from flask import Flask,url_for
app = Flask(__name__)
@app.route('/')
def hello_world():
tmpl = env.get_template('index.html')
sidebar = env.get_template('sidebar.html')
return tmpl.render(root_url="",sidebar=sidebar.render())
if __name__ == '__main__':
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
并在tempaltes / index.html中
{{ url_for('static', filename='js/main.js') }}
Run Code Online (Sandbox Code Playgroud)
虽然,我得到url_for没有定义?我正在尝试在线遵循示例,但我不知道为什么会得到这个
看来您正在以一种不推荐的方式使用 Flask 和 Jinja。我建议您使用render_template它还可以添加对 Flask 特定功能的访问,例如url_for:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
我认为问题是您正在尝试在Jinja html模板中使用代码逻辑。Jinja从设计上禁止这样做,以免代码/表示混在一起。
因此,我建议在代码中生成url,将其存储在您发送jinja的对象中的某个位置,然后在模板中使用该变量。类似于以下内容:
def hello_world():
tmpl = env.get_template('index.html')
sidebar = env.get_template('sidebar.html')
js_url = url_for('static', filename='js/main.js')
return tmpl.render(root_url="",sidebar=sidebar.render(), jsurl=js_url)
Run Code Online (Sandbox Code Playgroud)
然后在模板端:
<script type="text/javascript" src="{{jsurl}}"></script>
| 归档时间: |
|
| 查看次数: |
8657 次 |
| 最近记录: |