代碼盡在個人github上面:https://github.com/521xueweihanhtml
概述:
在Flask中,Jinja2默認配置以下:
A.擴展名爲.html,.htm,.xml和.xhtml的模板中開啓自動轉義。
B.在模板中可使用{% autoescape %}來手動設置是否轉義。
C.Flask在Jinja2環境中加入一些全局函數和輔助對象(下面寫的方法)
1.|safe的做用是關閉轉義字符
轉義就是對特殊字符進行轉義。特殊字符指的是HTML。
三種方法關閉轉義:
a.用Markup對象封裝。
b.在模板中使用|safe過濾
c.臨時關閉整個系統的自動轉義——{% autoescape false%}
2.{{ 這裏放變量 }}
3.註冊過濾器
兩個方法:手動放入jinja_env中,要麼使用template_filter()裝飾器git
a: @app.template_filter('reverse') def reverse_filter(s): return s[::-1] # 倒序列表 b: def reverse_filter(s): return s[::-1] app.jinja_env.filters['reverse'] = reverse_filter
一旦註冊成功,你就能夠在模板中像Jinja2的內建過濾其同樣使用過濾器了。
github
{% for x in mylist | reverse %} # 這裏就能夠按照你註冊的過濾器來進行操做 {% endfor%}
4.環境處理器的做用是把新的變量自動引入模板環境中,返回是一個字典。——用修飾器:@app.context_processor
傳遞的能夠是一個變量,也能夠是一個函數
傳遞變量:
app
@app.context_processor def inject_user(): return dict(user = g.user)
傳遞函數:
函數
@app.context_processor def utility_processor(): # 處理貨幣轉換的一個方法 def format_price(amount, currency = u'$'): return u'{0:.2f}{1}'.format(amount, currency) return dict(format_price = format_price)
上面的例子把format_price函數傳遞給全部模板,能夠在模板中隨意調用spa
{{ format_price(0.33) }}