博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flask - 特殊装饰器 和 Flask工作结构模式(FBV, CBV)
阅读量:4487 次
发布时间:2019-06-08

本文共 1621 字,大约阅读时间需要 5 分钟。

目录

  • 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"))

  

转载于:https://www.cnblogs.com/lw1095950124/p/10956394.html

你可能感兴趣的文章
MySQL ACID及四种隔离级别的解释
查看>>
text-align 属性,输入框数字向右靠
查看>>
二叉搜索树(搜索二叉树)转换成一个双向链表
查看>>
Linux下的时间戳
查看>>
xpath的学习
查看>>
kvm系列之四:热添加技术
查看>>
grep命令
查看>>
火狐浏览器设置bypass
查看>>
java Object类的公共方法
查看>>
UOJ356 [JOI2017春季合宿] Port Facility 【启发式合并】【堆】【并查集】
查看>>
思百德全区播放的个人见解及B区ISO破除区码播放教程
查看>>
Delphi的命令行编译命令
查看>>
BZOJ 1901 Zju2112 Dynamic Rankings 题解
查看>>
C++虚析构函数
查看>>
《玩转.NET Micro Framework 移植-基于STM32F10x处理器》--微软中国.NET Micro Framework项目组工程师所作之序...
查看>>
[转]模块化——Common规范及Node模块实现
查看>>
php服务端搜索,功能改进
查看>>
Centos不能上外网解决
查看>>
机器学习基石笔记9——机器可以怎样学习(1)
查看>>
软件的一些标号及对应版本
查看>>