2016-02-05 88 views
2

我正在構建顯示文章的網頁。 在我的數據庫中,我必須使用屬性,其中一個用於放置Markdown代碼,另一個用於保存從Markdown代碼轉換而來的HTML代碼。我想獲取HTML並將其添加到我的基本HTML中。 我使用Flask框架和SQLAlchemy和數據保存在sqlite數據庫。 我的模型:在燒瓶模板中呈現html字符串

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文件中?

回答

4

默認情況下,jinja2(燒瓶的模板引擎)假定{{ }}內部的輸入是不安全的,並且不會允許其中的js或html ...您可以通過在模板中使用safe過濾器來解決此問題。這將告訴jinja2內容是安全的呈現,而不是爲了逃避html/javascript

{{ post.body | safe }}