我正在建立一个网页来展示文章。
在我的数据库中,我必须使用属性,其中一个用于放置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")
也无法正常工作。
当我调试程序时,我发现数据库返回u'string'
。
如何获取纯HTML代码并将其应用于我的基本HTML文件?
答案 0 :(得分:7)
默认情况下jinja2(烧瓶的模板引擎)假设{{ }}
内部的输入不安全,并且不允许在其中使用js或html ...您可以使用safe
过滤器来解决此问题在你的模板里面。这将告诉jinja2内容可以安全地渲染,而不是逃避html / javascript
{{ post.body | safe }}