flask自定義過濾器,flash,form表單

2021-09-29 05:22:32 字數 3143 閱讀 5860

自定義的過濾器,過濾器本質上是乙個函式,當自帶的過濾器不滿住要求的時候,我要進行重寫

過濾器註冊有兩種方式

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...