目录
- Flask - 特殊装饰器 和 Flask工作结构模式
- @app.errorhandler()
- @app.before_request
- @app.after_request
- FBV和CBV
Flask - 特殊装饰器 和 Flask工作结构模式
@app.errorhandler()
作用: 重定义错误返回信息!
@app.errorhandler(404) def error404(a): return f"你要查看的页面,被怪兽吃了!{a}"
@app.before_request
作用: 在请求(request)进入视函数之前 进入被装饰的函数, 因此可以在请求进入视函数之前做一些操作, 比如验证session等.
from flask import Flaskfrom flask import requestfrom flask import redirectfrom flask import sessionapp = Flask(__name__) # type:Flaskapp.secret_key = "DragonFire"@app.before_requestdef 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_requestdef 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): # methods = ['GET'] 优先级高,上面没有的请求方式有对应方法也没用 def get(self): pass def post(self): pass app.add_url_rule("/login",endpoint=None,view_func=Login.as_view(name="login"))
-
-