flask(四)

1.Flask-Session

from flask import session,Flask
from flask_session import Session  #導入
from redis import Redis
app=Flask(__name__)
#1.session的配置
app.config["SESSION_TYPE"]="redis"
app.config["SESSION_REDIS"]=Redis(host="127.0.0.1",port=6379,db=6)

Session(app)  #2.定義使用該session的app

#3.存與取使用
@app.route('/let')
def let():
    session["user"]="shy"
    return 'ok'

@app.route("/get")
def get():
    print(session["user"])
    return 'okok'
app.run('0.0.0.0',5000,debug=True)

flask中的session須要執行session_interface-------open_sessionhtml

 

注:字典的setfefault方法redis

dict.setdefault(key,default=None)
#若是鍵不存在於字典中,將會添加鍵並將值設爲默認值。

 

2.WTForms(至關於Django的modelform)

登陸頁面

from wtforms.fields import simple,core
from wtforms import Form
from wtforms import validators
from flask import Flask,request,render_template

app=Flask(__name__)

class LoginForm(Form):
    username = simple.StringField(
        label="用戶名",  # 標籤標記
        validators=[validators.DataRequired(message='用戶名不能爲空'),validators.Length(min=3,max=5,message="過長或太短")],  # 不能爲空
        # descripyion="ffff",  # 描述標記
        id="user_name",  # 標籤id
        default=None,
        # widget=   #input輸入框,已經被實例化了
        render_kw=None,
    )  # 實例化
    password = simple.PasswordField(
        label="密碼",  # 標籤標記
        validators=[
            validators.DataRequired(message='密碼不能爲空'),
            validators.Email(message="密碼必須符合郵箱規則"),
        ],  # 不能爲空
        # descripyion="",  # 描述標記
        id="password",  # 標籤id
        # widget=   #input輸入框,已經被實例化了
        render_kw=None,
    )

@app.route("/get",methods=['GET','POST'])
def index():
    print(111111111)
    if request.method == "GET":
        print(222)
        fm = LoginForm()
        print(33)
        return render_template("index.html", wtf=fm)
    else:
        print(55555)
        new_fm = LoginForm(request.form)
        print(new_fm)
        if new_fm.validate():
            return new_fm.data.get("username")
        else:
            return render_template("index.html", wtf=new_fm)
app.run('0.0.0.0',5000)

註冊頁面

from wtforms.fields import simple.core
from wtforms import Form
from wtforms import validators

class LogonForm(Form):
    username=simple.StringField(
        label="用戶名",#標籤標記
        validators=[validators.Daterequire(message='用戶名不能爲空')],#不能爲空
        descripyion="",#描述標記
        id="user_name",#標籤id
        #widget=   #input輸入框,已經被實例化了
        render_kw=None,
    )#實例化
    password=simple.PasswordField(
        label="密碼",#標籤標記
        validators=[validators.Equalto(fieldname='password',message='密碼兩次輸入不一致')],
        descripyion="",#描述標記
        id="user_name",#標籤id
        #widget=   #input輸入框,已經被實例化了
        render_kw=None,
    )
    repassword=simple.PasswordField(
        label="再次輸入密碼",#標籤標記
        validators=[
            validators.Daterequire(message='密碼不能爲空'),
            validators.Email(message="密碼必須符合郵箱規則"),
            ],#不能爲空
        descripyion="",#描述標記
        id="user_name",#標籤id
        #widget=   #input輸入框,已經被實例化了
        render_kw=None,
    )
    gender=core.RadioField(
        label='性別',
        coerce=int,
        choices=(
            (1,''),
            (2,'')
        ),
        defaule=1,
    )
    hobby=core.SelectMultipleField(
        label='愛好',
        coerce=int,#獲取到的數據類型,若是改爲str,choice和defaule也要改
        choices=(
            (1,'抽菸'),
            (2,'喝酒'),
            (3,'燙頭'),
            (4,'擼串'),
        ),
        defaule=(1,2,3),
        validators=[validators.Length(min=2,max=4,message='愛好不能太多太少')]
    ),
 @app.route("/reg",method)
def   reg():
    if request.method=="GET":
        rf=LoginForm()
        return render_template("index.html",wtf=rf)
    else:
        rf=LoginForm(request.path)
        if rf.validate():
            return rf.data.get("username")
        else:
            return render_template("index.html",wtf=rf)
相關文章
相關標籤/搜索