自定義的過濾器,過濾器本質上是乙個函式,當自帶的過濾器不滿住要求的時候,我要進行重寫
過濾器註冊有兩種方式
def my_reverse(value):
print('自定義的過濾器')
value_later = value[::-1]
return value_later
def maopao(value):
for j in range(len(value)):
for i in range(len(value)-1-j):
if value[i]>value[i+1]:
value[i],value[i+1]=value[i+1],value[i]
return value
def info():
list1 = [1,2,3,4,5]
return render_template('myreverse.html',list1=list1)
可以在html頁面應用如下
}
}
}
注意在使用flash的時候必須要設定密匙,因為flash是基於session的
博主一般是將密匙設定在ini檔案裡然後在py檔案中配置檔案
#簡易版本的密匙,單引號裡面隨便寫
secret_key = 'hahahahaha'
py檔案
#配置檔案
def info():
#訊息佇列
flash('這是訊息佇列傳遞過來的東西')
return render_template('flash.html')
html頁面
}
可以在頁面中將flash裡面的字串列印出來
flash的詳細介紹
1 設定flash
1.1 flash("要傳遞的值",category="分類的名稱"),如果不傳預設是message
本質:session['_flash']
2取flash設定的值我們用get_flashed_messages
2.1 get_flashed_messages(with_categories=false, category_filter=()),
2.1.1如果不傳遞 category_filter,取出上面儲存的所有分類傳遞的值
2.1.2如果不傳with_categories就只取值,不取分類的名字,如果傳值,就獲取 分類名和分類值
3 這個flash只能乙個檢視函式中取,只要有乙個檢視函式取過了,那其他檢視函式就不能獲取
本質:session.pop("_flash")
3.1 但是在同乙個檢視函式裡面可以無限的取值
pip install flask_wtf
然後就可以使用flask_wtf裡面的方法了
from flask_script import manager
from flask import flask, render_template, flash, request,make_response
from flask_wtf import flaskform
from wtforms import stringfield,submitfield,passwordfield
from wtforms.validators import datarequired
#這個是自帶的csrf驗證,如果不關閉那麼後面則一直驗證未通過
#配置檔案
#自定義乙個表單
class loginform(flaskform):
#validators是驗證,如果不寫會報空
#使用者名稱,這個是labal
username = stringfield('使用者名稱',validators=[datarequired('輸入使用者名稱')])
pwd = passwordfield('密碼',validators=[datarequired('輸入密碼')])
sub = submitfield('登陸')
def login():
csrf_token = 'sadasdasdasdsa'
loginform = loginform()
if request.method =='get':
response = make_response(render_template('login.html',form=loginform,csrf_token=csrf_token))
response.set_cookie('csrf_token',csrf_token)
return response
elif request.method == 'post':
#取出cookie中的csrf_token
cookie_csrf = request.cookies.get('csrf_token')
print(cookie_csrf)
#取出form表單中的csrf_token
form_csrf = request.form['csrf_token']
print(form_csrf)
print(request.form.get('csrf_token'))
#對比if cookie_csrf != form_csrf:
return 'csrf校驗未通過'
if loginform.validate_on_submit():
print('進入驗證')
else:
print('驗證未過')
return 'ok'
if __name__ == '__main__':
manger.run()
1.validators不寫
2.html頁面的**
flask的自定義過濾器
過濾器的本質是函式。當模板內建的過濾器不能滿足需求,可以自定義過濾器。自定義過濾器有兩種實現方式 重要 自定義的過濾器名稱如果和內建的過濾器重名,會覆蓋內建的過濾器。方式一def do filterdoublesort ls 自定義乙個方法 return ls 2 db2 講我們自定的方法註冊在ad...
flask框架模板自定義過濾器
過濾器的本質是函式。當模板內建的過濾器不能滿足需求,可以自定義過濾器。自定義過濾器有兩種實現方式 重要 自定義的過濾器名稱如果和內建的過濾器重名,會覆蓋內建的過濾器。方式一通過呼叫應用程式例項的 add template filter 方法實現自定義過濾器。該方法第乙個引數是函式名,第二個引數是自定...
flask系列之自定義過濾器
flak過濾器可以使用flask內建函式add template filter 或者裝飾器的方式實現 方式一 使用add template filter函式實現自定義過濾器 from flask import flask,render template import config def my fi...