2016-03-03 248 views
12

我使用curl來觀看我的web應用程序的輸出。當Flask和Jinja渲染模板時,輸出中會有很多不必要的空白。它似乎是通過從Flask-WTF和Flask-Bootstrap渲染各種組件來添加的。我可以用sed去掉這個,但是有沒有辦法從Jinja控制這個?從Jinja呈現模板中刪除不必要的空格

+0

相關:http://stackoverflow.com/questions/5191147/spaceless-tag-for-jinja-templates – davidism

回答

19

金嘉有多種方式可以control whitespace。它有一種方法來美化輸出,你必須手動確保一切看起來「很好」。

最廣泛的解決方案是在env上設置trim_blockslstrip_blocks

app.jinja_env.trim_blocks = True 
app.jinja_env.lstrip_blocks = True 

如果要在文件末尾保留一個換行符,請設置strip_trailing_newlines = False

您可以使用控制字符來修改塊周圍空白的工作方式。 -總是刪除空格,+始終保留它,覆蓋該塊的env設置。角色可以在塊的開始或結束(或兩個)處去控制該方向上的空白。

{%- if ... %} strips before 
{% if ... +%} preserves after 
{%+ if ... -%} preserves before and strips after 
remember that `{% endif %}` is treated separately 

注意,控制字符僅適用於模板寫。如果您包含模板或使用來自第三方的宏,但他們編寫的模板將應用於該部分。

+0

「+」和「-'是否適用於所有標籤? '{%endif +%}'給我'語句塊'預期標記結束',得到'+'':( –

+0

另外,'{%如果爲真+%}'給我'意外'語句結束' '也許jinja2從那以後發展了嗎? –

+0

請報告作爲Jinja的錯誤。 – davidism