我正在使用Flask-FlatPages
构建静态网站(并跟进Frozen-Flask
)。
在我的页面中,我想将文本与图像混淆。这将是一种天真的方式:
## Look at *this* image:
<img src="{{ url_for('static', filename='images/image.png') }}">
Hmm, it does **not** seem to load.
{{ template tag }}
未被解析,因为FlatPages通过markdown运行页面而不是通过Flask的模板系统(如果我没有记错的话)。
如何获得正确的图像链接?
相关代码
#app.py
from flask import Flask, render_template
from flask_flatpages import FlatPages
app = Flask(__name__)
pages = FlatPages(app)
@app.route('/tip/<path:path>')
def tip_detail(path):
tip = pages.get_or_404(path)
template = tip.meta.get('template', 'tip_detail.html')
return render_template(template, tip=tip)
和
#tip_detail.html
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<h1>{{ tip.meta.title }}</h1>
{{ tip }}
</body>
</html>
答案 0 :(得分:3)
通过https://github.com/naringas在https://github.com/SimonSapin/Flask-FlatPages/pull/1
留下的评论解决事实证明,Flask-FlatPages不会渲染Jinja模板标签。但它可以选择设置自定义HTML渲染器。使用它在渲染降价之前首先渲染Jinja模板。
#add these lines to app.py
def prerender_jinja(text):
prerendered_body = render_template_string(Markup(text))
return pygmented_markdown(prerendered_body)
app.config['FLATPAGES_HTML_RENDERER'] = prerender_jinja