zoukankan      html  css  js  c++  java
  • Flask

    Flask - 特殊装饰器 和 Flask工作结构模式

    @app.errorhandler()

    作用: 重定义错误返回信息!

    @app.errorhandler(404)
        def error404(a):
            return f"你要查看的页面,被怪兽吃了!{a}"
    

    @app.before_request

    作用: 在请求(request)进入视函数之前 进入被装饰的函数, 因此可以在请求进入视函数之前做一些操作, 比如验证session等.

    from flask import Flask
    from flask import request
    from flask import redirect
    from flask import session
    
    app = Flask(__name__)  # type:Flask
    app.secret_key = "DragonFire"
    
    
    @app.before_request
    def is_login():
        if request.path == "/login":
            return None
    
        if not session.get("user"):
            return redirect("/login")
    
    
    @app.route("/login")
    def login():
        return "Login"
    
    
    @app.route("/index")
    def index():
        return "Index"
    
    
    @app.route("/home")
    def home():
        return "Login"
    
    
    app.run("0.0.0.0", 5000)
    

    @app.before_request 也是一个装饰器,他所装饰的函数,都会在请求进入视图函数之前执行

    request.path 是来读取当前的url地址如果是 /login 就允许直接通过 return None 你可以理解成通过放行

    校验session中是否有user 如果没有的话,证明没有登录,所以毫不留情的 redirect("/login") 跳转登录页面

    还有一个要提的 @app.before_first_request 它与 @app.before_request 极为相似或者说是一模一样,只不过它只会被执行一次

    @app.after_request

    作用: 在响应(response)之后做出响应

    @app.after_request
    def foot_log(environ):
        if request.path != "/login":
            print("有客人访问了",request.path)
        return environ
    

    FBV和CBV

    • FBV路由和视图

        @app.route("/login")
        def login():
      
    • CBV:

        from flask import views
        class Login(views.MethodView):
            def get(self):
                pass
            
            def post(self):
                pass
            
        app.add_url_rule("/login",endpoint=None,view_func=Login.as_view(name="login"))
  • 相关阅读:
    P4839 P哥的桶 题解(线段树维护线性基)
    线性基入门
    Lowest Common Ancestor 题解(lca+思维)
    B
    java string对象的简单方法
    AtCoder Grand Contest 016 D
    FFT
    回文自动机(BZOJ2565)
    二维RMQ
    AC自动机(BZOJ1030)
  • 原文地址:https://www.cnblogs.com/konghui/p/10574902.html
Copyright © 2011-2022 走看看