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

Flask - 特殊装饰器 和 Flask工作结构模式(FBV, CBV)的更多相关文章

  1. python装饰器 & flask 通过装饰器 实现 单点登录验证

    首先介绍装饰器,以下是一段标注了特殊输出的代码.用于帮助理解装饰器的调用过程. import time def Decorator_one(arg1): info = "\033[1;31; ...

  2. flask类装饰器

    from flask import Flask,request,views from functools import wraps app = Flask(__name__) #自定义登录装饰器 de ...

  3. Flask 之装饰器有关

    - 先记住一句话:自定义python装饰器时一定要记住使用@functools.wraps(func)修饰wrapper - 在Flask中使用装饰器遇到AssertionError: View fu ...

  4. flask之Flask特殊装饰器

    flask_decorators.py ''' Flask中的特殊装饰器: (1)@app.before_request 请求到达视图函数之前,进行自定义操作,类似django中间件中的process ...

  5. Flask 特殊装饰器

    请求进入函数之前 before_request # -*- coding: utf-8 -*-   from flask import Flask, session, redirect, reques ...

  6. Python中的装饰器的使用及固定模式

    装饰器的使用: 在不想修改函数的调用方式,但是想给函数添加内容的功能的时候使用     为什么使用装饰器: 软件实体应该是可扩展,而不可修改的.也就是说,对扩展是开放的,而对修改是封闭的. 因此,引出 ...

  7. 添加登录装饰器的两种方式:FBV和CBV

    1.FBV方式:添加验证装饰器 def auth(func): def deco(request, *args, **kwargs): u = request.get_signed_cookie('u ...

  8. Flask特殊装饰器

    @app.errorhandler():重定义错误返回信息 @app.errorhandler(404) #监听多少写多少 def error404(message): return f"你 ...

  9. Flask蓝图Blueprint和特殊装饰器

    Flask 中的 蓝图 Blueprint 不能被run的flask实例:相当于django中的app01 应用 蓝图作用:功能隔离 路由隔离 Blueprint就是 一个不能run的flask 蓝图 ...

随机推荐

  1. UITextView获取光标位置

    UITextRange *range = textView.selectedTextRange; //光标位置 CGRect  rect = [textView caretRectForPositio ...

  2. puppet开源的软件自动化配置和部署工具——本质就是CS,服务端统一管理配置

    1.  概述 puppet是一个开源的软件自动化配置和部署工具,它使用简单且功能强大,正得到了越来越多地关注,现在很多大型IT公司均在使用puppet对集群中的软件进行管理和部署,如google利用p ...

  3. LuoguP4462 [CQOI2018]异或序列

    https://zybuluo.com/ysner/note/1124952 题面 给你一个大小为\(n\)的序列,然后给你一个数字\(k\),再给出\(m\)组询问,询问给出一个区间,问这个区间里面 ...

  4. bzoj4756

    http://www.lydsy.com/JudgeOnline/problem.php?id=4756 水题一枚...但是我写了一个小时...手贱打反查不出来... 就是每次线段树合并,先把自己的儿 ...

  5. MSP430 WDT

    MSP430 WDT 有两种模式:1,看门狗  2,定时器 我们这次只用定时器模式,注意有两个决定定时时间的地方:1,时钟源选择  2,间隔时间选择 时钟源可以为:SMCLK 或者 ACLK 时间间隔 ...

  6. Linux文件属性相关补充及软硬连接

    第1章 文件属性相关 1.1 文件的属性 1.1.1 扩展名 windows  通过扩展名区分不同的类型的文件 linux 扩展名是给人类看的 方便我们区分不同类型文件 .conf      配置文件 ...

  7. activiti安装-------安装插件

    对上面的放大

  8. Counterfeit Dollar

    http://poj.org/problem?id=1013 #include<stdio.h> #include<string.h> #include<math.h&g ...

  9. Gym - 101972B Arabella Collegiate Programming Contest (2018) B. Updating the Tree 树DFS

    题面 题意:T组数据,每次给你1e5个点的树(1为根),每个点有一权值,询问1-n每个节点的子树中, 至少修改几个点的权值(每次都可以任意修改),才能让子树中任意2点的距离==他们权值差的绝对值 无解 ...

  10. IOS上微信在输入框弹出键盘后,页面不恢复,下方有留白,有弹窗弹出时页面内容感应区域错位

    问题说明: ios中,键盘的弹起,页面会往上挪动,使输入框展示在页面中间,键盘隐藏页面会下挪恢复原状. 在微信移动端,ios页面不恢复,下方有留白. 收起键盘的瞬间,如果有弹窗弹出,此时时页面内容应区 ...