在 Flask 模板中渲染 html 个字符串
render html strings in flask templates
我正在构建一个网页来显示文章。
在我的数据库中,我有一个属性,一个用来放Markdown代码,另一个用来保存从Markdown代码转换而来的HTML代码。我想获得 HTML 并将其添加到我的基础 HTML。
我使用 Flask
框架和 SQLAlchemy
并且数据保存在 sqlite
数据库中。
我的模型:
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String)
body = db.Column(db.String)
timestamp = db.Column(db.String)
tag = db.Column(db.String)
info = db.Column(db.String)
body_markdown = db.Column(db.String)
和我的视图函数:
def post(post_id):
post = db.session.query(Post).filter(Post.id == post_id).first()
return render_template('post.html',
post = post,)
首先,我试过:
<div class="post-body">
{{post.body}}
</div>
它显示带有 HTML 标签的整个字符串。
post.body.decode("utf-8")
和 post.body.decode("ascii")
也不起作用。
我调试程序的时候发现数据库returnsu'string'
。
如何获得纯 HTML 代码并将其应用到我的基础 HTML 文件中?
默认情况下,Jinja2(Flask 的模板引擎)假定 {{ }}
中的输入是不安全的,并且不允许 js 或 html 在其中输入。您可以通过在模板中使用 safe
过滤器来解决这个问题。这将告诉 Jinja2 内容可以安全地按原样呈现,并且不会转义 html/javascript.
{{ post.body | safe }}
我正在构建一个网页来显示文章。
在我的数据库中,我有一个属性,一个用来放Markdown代码,另一个用来保存从Markdown代码转换而来的HTML代码。我想获得 HTML 并将其添加到我的基础 HTML。
我使用 Flask
框架和 SQLAlchemy
并且数据保存在 sqlite
数据库中。
我的模型:
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String)
body = db.Column(db.String)
timestamp = db.Column(db.String)
tag = db.Column(db.String)
info = db.Column(db.String)
body_markdown = db.Column(db.String)
和我的视图函数:
def post(post_id):
post = db.session.query(Post).filter(Post.id == post_id).first()
return render_template('post.html',
post = post,)
首先,我试过:
<div class="post-body">
{{post.body}}
</div>
它显示带有 HTML 标签的整个字符串。
post.body.decode("utf-8")
和 post.body.decode("ascii")
也不起作用。
我调试程序的时候发现数据库returnsu'string'
。
如何获得纯 HTML 代码并将其应用到我的基础 HTML 文件中?
默认情况下,Jinja2(Flask 的模板引擎)假定 {{ }}
中的输入是不安全的,并且不允许 js 或 html 在其中输入。您可以通过在模板中使用 safe
过滤器来解决这个问题。这将告诉 Jinja2 内容可以安全地按原样呈现,并且不会转义 html/javascript.
{{ post.body | safe }}