zoukankan      html  css  js  c++  java
  • 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_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)

     

  • 相关阅读:
    git常用命令
    国内优秀npm镜像,nvm
    canvas --> getImageData()
    canvas sprite动画 简单封装
    springboot项目中ttf和woff字体图标页面无法显示
    树莓派配置Oracle JDK8
    记一次SqlServer大表查询语句优化和执行计划分析
    linux 查看某个进程和服务内存占用情况命令
    安装MySQL后,需要调整的10个性能配置项
    ARM架构上的Debian10编译timescaledb
  • 原文地址:https://www.cnblogs.com/shanghongyun/p/10275351.html
Copyright © 2011-2022 走看看