gpt4 book ai didi

python - 在模板中调用 Flask 函数

转载 作者:行者123 更新时间:2023-11-28 17:38:37 26 4
gpt4 key购买 nike

我正在使用 Flask 和 Jinja 模板开发我的网站,但我有一个关于在模板中包含图像的奇怪错误。我有一个 post.htmlbase.html 继承的模板,它从 SQL 数据库传递一个 post 对象。问题是当我这样做时,一些 Jinja 模板函数没有被调用,即图像 HTML 标签没有根据 url_for() 正确加载。称呼。常规 HTML 标签很好,因为我使用 |safe使它们得到处理。

示例来自 post.html模板:

{% extends "base.html" %}
{% block content %}
<div class="post-description">
<p>
{{post.body|safe}}
</p>
</div>
{% endblock %}

例子来自 post.body调用:

<b> I work, and am bolded</b>
<img src="{{ url_for('static', filename = 'images/randomImg.png') }}">

虽然粗体文本显示正常,但 url_for永远不会被调用。在输出的源代码中(在实际网站上),很容易验证,因为 src 链接从未正确表示,这与评估函数的其他页面不同。如果我复制/粘贴 <img>行所以现在我的post.html看起来像:

{% extends "base.html" %}
{% block content %}
<div class="post-description">
<p>
<img src="{{ url_for('static', filename = 'images/randomImg.png') }}">
{{post.body|safe}}
</p>
</div>
{% endblock %}

第一个图像调用加载正常,但 post.body 中的调用加载不正常。我不确定是否有 Flask 或 Jinja 方法来强制它对其进行评估,但我希望如此。

最佳答案

post.body 没有按照您想要的方式处理,因为 jinja2 默认情况下不会尝试重新呈现自己的输出,这是完全合理的。

您可以呈现帖子正文,然后呈现响应:

@app.route("/some/path")
def some_view():
# ...
post = Post.query.first()
rendered_post_body = render_template_string(post.body)
return render_template("some_template.html", post_body=rendered_post_body)

关于python - 在模板中调用 Flask 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27616273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com