2017-08-01 30 views
0

我已經在Flask管理視圖(app.py)中格式化了一列。Flask管理視圖中的渲染模板打印文本而不是html功能

class main_coursesView(ModelView): 
    def _user_formatter(view, context, model, name): 
     return render_template("template.html") 

    column_formatters = { 
     'image': _user_formatter 
    } 

而template.html文件包含以下代碼。

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 
<a href="#" id="upload_widget_opener">Upload images</a> 
<script src="https://widget.cloudinary.com/global/all.js" type="text/javascript"></script> 

<script type="text/javascript"> 
    document.getElementById("upload_widget_opener").addEventListener("click", function() { 
    cloudinary.openUploadWidget({ cloud_name: 'zeboio', sources: [ 'local', 'url', 'camera', 'image_search', 
       'facebook', 'dropbox', 'google_photos' ], upload_preset: 'mdjqdwsf'}, 
     function(error, result) { console.log(error, result) }); 
    }, false); 
</script> 

</body> 
</html> 

所以,當我運行視圖(app.py),在格式化的列中html文件的內容得到打印。相反,我需要執行html文件中提到的事件。

+0

看起來你在第一行缺少一個「<」,所以它應該是<!DOCTYPE html> – Skorpeo

+0

只是一個錯字。我現在要改變它 –

+0

有什麼我可以解決這個問題嗎? –

回答

1

使用markupsafe的標記方法來包裝render_template輸出。

from markupsafe import Markup 

class main_coursesView(ModelView): 
    def _user_formatter(view, context, model, name): 
     return Markup(render_template("template.html")) 

    column_formatters = { 
     'image': _user_formatter 
    }