過濾器的本質就是函數,如果在模板中調用這個過濾器,那么就會將這個變量的值作為第一個參數傳給過濾器函數,然后將函數的返回值作為濾器的返回值
1、在python文件中寫好過濾的函數和邏輯
2、將將函數注冊到模板過濾器中:@app.template_filter('過濾器名')
3、在模板中調用過濾器:變量|過濾器名
實現一個把‘hello’替換成''的過濾器
也可以改為模板里面自己設置要替換的內容
實現時間處理過濾器
返回time距離現在的時間是多久
1、如果時間間隔小於1分鍾,就顯示“剛剛”
2、如果時間間隔大於等於1分鍾小於1小時,就顯示“xx分鍾前”
3、如果時間間隔大於等於1小時小於24小時,就顯示“xx小時前”
4、如果時間間隔大於等於24小時小於30天,就顯示“xx天前”
5、否則就顯示具體的時間
@app.route('/')
def index():
data = {'time': datetime(2019, 11, 2, 16, 0, 0)}
return render_template('index.html', **data)
@app.template_filter('time_handle')
def time_handle(time):
""" 返回time距離現在的時間是多久 """
if isinstance(time, datetime):
timestamp = (datetime.now() - time).total_seconds()
if timestamp < 60:
return '剛剛'
elif timestamp >= 60 and timestamp < 60 * 60:
return f'{int(timestamp / 60)}分鍾前'
elif timestamp >= 60 * 60 and timestamp < 60 * 60 * 24:
return f'{int(timestamp / (60 * 60))}小時前'
elif timestamp >= 60 * 60 * 24 and timestamp < 60 * 60 * 24 * 30:
return f'{int(timestamp / (60 * 60 * 24))}天前'
else:
return time.strftime('%Y-%m-%d %H:%M')
else:
return time