• 【Flask】登录练习


    基于蓝图CBV模式的登录

    使用蓝图并用cbv模式完成登录功能

    登录成功后跳转到首页

    将session保存在liunx上的redis数据库

    使用before_request验证是否是登陆用户

    蓝图

    复制代码
    from flask import Blueprint,render_template,redirect,views,request,session
    
    user = Blueprint("user",__name__)
    
    class User(views.MethodView):
        def get(self):
            return render_template("login.html")
    
        def post(self):
            username = request.form.get("username")
            password = request.form.get("password")
            if username == "henry" and password == "123":
                session["username"] = username
                uname = session.get("username")
                print(uname)
                return redirect("home")
            else:
                return "username or password error"
    user.add_url_rule("/login",endpoint=None,view_func=User.as_view(name="login"))
    复制代码

    主程序

    复制代码
    from flask import Flask,request,redirect,session
    from flask_session import Session
    from redis import Redis
    from user_login.login_blue import user
    app = Flask(__name__)
    app.register_blueprint(user)
    
    app.config["SESSION_TYPE"]="redis"
    app.config["SESSION_REDIS"]=Redis(host="192.168.61.138",port=6380,db=2,password="root")
    
    Session(app)
    
    @app.before_request  # 相当于django的中间件
    def auth():
        # 白名单放行
        if request.path == "/login":
            return None
        # 判断是否是登录用户
        if session.get("username"):
            return None
        else:
            # 如果不是登录页面就会跳转到登录页面
            return redirect("login")
    
    @app.route("/home")
    def home():
        return "这是homo页面"
    
    if __name__ == '__main__':
        app.run()
    复制代码

    登录演示

    没有登录时访问home页面会跳转到登录页面,让用户登录;

    登录成功后会跳转到home页面,登录成功后我们写入了session保持会话,我们可以直接访问登录后的所有页面;

  • 相关阅读:
    ddl(数据定义语言) ,dml (数据操控语言),dcl(数据控制语言)
    集合框架
    泛型(模拟list)
    Clone
    线程问题以及调用
    面向对象(封装、继承、多态、抽象)
    SpringMVC的四个核心接口
    VUE项目报错 This is probably not a problem with npm. There is likely additional logging output above.
    debian java8 cacerts 证书的丢失
    yii2 ,thinkphp的伪静态
  • 原文地址:https://www.cnblogs.com/youxiu123/p/11624297.html
Copyright © 2020-2023  润新知