flask(四)
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_session
注:字典的setfefault方法
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)
改变世界,改变自己!