video17 jinja2過濾器html
過濾器經過管道符號進行使用。如{{ name | length }}將返回name的長度,過濾器至關因而一個函數。python
1 def hello_world(): 2 intro = '' #這裏爲空或None時候會顯示默認值。 3 return render_template('index.html',intro=intro) 4 5 {{ intro | default('此人很懶,沒留下信息。',boolean =True)}}
或者:
{{ intro or '此人很懶,沒留下信息。' }}
這裏的or和python中同樣,都爲真則取第一個,都爲假就取後一個。app
video20 自定義過濾器ide
如下爲一個字符串替換的過濾器。函數
1 @app.route('/') 2 def hello_world(): 3 intro = 'hello,world!what are you...?' 4 5 return render_template('index.html',intro=intro) 6 7 @app.template_filter('my_cut') 8 def cut(value): 9 value = str(value).replace('hello','Hi') 10 return value 11 12 13 {{ intro | my_cut }}
下面講一個時間戳的過濾器。spa
1 @app.route('/') 2 def hello_world(): 3 intro = 'hello,world!what are you...?' 4 create_time = datetime(2019,8,15,12,32,15) #設置任意時間 5 return render_template('index.html',intro=intro,create_time=create_time) 6 7 @app.template_filter('handle_time') #設置過濾器名稱 8 def handle_time(time): 9 if isinstance(time,datetime): 10 now = datetime.now() 11 timestamp = (now - time).total_seconds() #換算爲秒 12 if timestamp < 60: 13 return '剛剛' 14 elif timestamp >= 60 and timestamp < 60* 60: 15 return "%s分鐘前" %str(int(timestamp / 60)) 16 elif timestamp >= 60 * 60 and timestamp < 60 * 60 * 24: 17 return "%s小時前" % str(int(timestamp / 60 / 60)) 18 elif timestamp > 60 * 60 * 24: 19 return time.strftime('%Y/%m%d %H:%M') #按照‘2019/0815 12:32’格式輸出 20 else: 21 return time.strftime('%Y/%m%d %H:%M') 22 23 24 {{ create_time | handle_time }}
video22 條件判斷3d
video23 for循環code
video25 宏htm
這部分請移步:http://www.javashuo.com/article/p-eulclzse-dn.htmlblog