zoukankan      html  css  js  c++  java
  • 116 flask的cbv flash flask_session组件 WTForms 数据库连接池

    主要内容:  dragonfire

    1 flask的cbv写法:

    from flask import Flask, render_template, redirect, request, url_for
    from flask import views
    app = Flask(__name__)
    class LoginView(views.MethodView):
        def get(self):
            print(url_for('login'))
            return render_template("login.html")
    
        def post(self):
            userinfo = request.form.to_dict()
            username = userinfo.get("username")
            password = userinfo.get("password")
            if username == '丽丽' and password == "123":
                return "登录成功"
            else:
                return redirect("/login")
    app.add_url_rule('/login', view_func=LoginView.as_view(name="login"))  # name指定的是别名, 会当做endpoint使用.
    app.run(debug=True)
    

    2 flash :  Flask中闪现是基于session来实现的,而session存在于服务器端的一个字典里,把session保存起来,取一次值,里面还是有数据,直到你完全删除后才没有值了

      a : flash中存数据      flash('字符串')

      b:  flash中取数据      get_flash_message() 

    from flask import Flask, request, flash, render_template, get_flashed_messages
    from flask import views
    app = Flask(__name__)
    app.secret_key = "sudden"
    # Flask中闪现是基于session来实现的,而session存在于服务器端的一个字典里,把session保存起来,取一次值,里面还是有数据,直到你完全删除后才没有值了。
    class LoginView(views.MethodView):
        def get(self):
            flash(" suddently exist")
            return render_template("login.html")
    
        def post(self):
            print(get_flashed_messages())
            return "login success!"
    app.add_url_rule("/ll", view_func=LoginView.as_view(name="ll"))
    app.run(debug=True)
    

    3 flask-seesion组件

    import redis
    from flask import Flask, render_template, request, session
    # flask-session组件则将支持session保存到多个地方
    from flask_session import Session
    app = Flask(__name__)
    #将seesion保存在redis中
    app.config["SESSION_TYPE"] = 'redis'
    app.config["SESSION_REDIS"] = redis.Redis(host='127.0.0.1', port=6379, db=3)
    Session(app)
    @app.route("/index")
    def index():
        session["user"] = "123"
        ret = session.get("user")
        print(ret)
        return 'index page'
    app.run(debug=True)
    # 443abf7c-b240-4e6b-a7ac-14f38505362f
    # 在数据库中的取session的值:   get session: value值 
    

    4 WTForms-  相当于django中的modelform :  是stringfield父类中的field类中的init方法.

    from wtforms import Form
    from wtforms.fields import simple, core
    from wtforms import validators
    class RegForm(Form):
        (
        password = simple.PasswordField(
            label="密码",
            validators=[
                validators.DataRequired(message="密码不能为空"),
                validators.length(min=4, max=7, message="密码的长度不能低于4大于7")
            ],
            # 可以控制渲染内容的属性
            render_kw={"class": "form-control"}
        )
        re_password = simple.PasswordField(
            label="确认密码",
            validators=[
                validators.EqualTo(fieldname="password", message="两次密码不一致")
            ],
            # 可以控制渲染内容的属性
            render_kw={"class": "my_password"}
        )
        hobby = core.SelectMultipleField(
            label="爱好",
            coerce=int,
            choices=(
                (1, '小姐姐'),
                (2, '小哥哥'),
                (3, '小萝莉')
            ),
            default=(1,2)
        )
        submit = simple.SubmitField(
            label="提交"
        )

      在html中的展示:

    <body>
    <form action="" method="post">
        {% for field in rf %}
            <div>
            {{ field.label }}{{ field }}
            </div>
        {% endfor %}
    </form>
    </body>
    

    5  DBUtills  数据库连接池:  116天代码

  • 相关阅读:
    关于git你日常工作中会用到的一些东西
    require.context
    vue-cli3.0 使用postcss-plugin-px2rem(推荐)和 postcss-pxtorem(postcss-px2rem)自动转换px为rem 的配置方法;
    div实现富文本编辑框
    webpack-bundle-analyzer打包文件分析工具
    web页面调用支付宝支付
    ajax回调中window.open弹出的窗口会被浏览器拦截的解决方法
    Django 文件上传
    Django 序列化 前端通过ajax来获取数据库中的数据
    Django Form组件 基于源码的扩展
  • 原文地址:https://www.cnblogs.com/gyh412724/p/10139242.html
Copyright © 2011-2022 走看看