目录flask
做用: 重定义错误返回信息!session
@app.errorhandler(404) def error404(a): return f"你要查看的页面,被怪兽吃了!{a}"
做用: 在请求(request)进入视函数以前 进入被装饰的函数, 所以能够在请求进入视函数以前作一些操做, 好比验证session等.app
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 你能够理解成经过放行post
校验session中是否有user 若是没有的话,证实没有登陆,因此绝不留情的 redirect("/login") 跳转登陆页面url
还有一个要提的 @app.before_first_request 它与 @app.before_request 极为类似或者说是如出一辙,只不过它只会被执行一次code
做用: 在响应(response)以后作出响应路由
@app.after_request def foot_log(environ): if request.path != "/login": print("有客人访问了",request.path) return environ
FBV路由和视图get
@app.route("/login") def login():
CBV:it
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"))