Flask框架 之上下文、请求钩子与Flask_Script

一、上下文

  • 请求上下文:request与session
  • 应用上下文:current_app与g:一次请求多个函数可以用它传参
@app.route("/")
def index():
    g.username = "yy"
    test()
    return "page"

# 1、请求上下文:request与session
# 2、应用上下文:current_app与g:一次请求多个函数可以用它传参
def test():
    print(g.username)

二、请求钩子

  请求钩子是通过装饰器实现的,flask有四种钩子(hook):

  • before_first_request:在处理第一个请求前运行
  • before_request:在每次请求前运行
  • after_request(Response):如果没有未处理的异常抛出,每次请求后执行
  • teardown_request(Response):在每次请求后执行,即使有异常抛出
@app.route("/")
def index():
    return "page"

@app.route("/login")
def login():
    return "login"

@app.before_first_request
def first():
    print("before_first_request")

@app.before_request
def check_login():
    do_url = request.path
    if do_url != "/login":
        return redirect(url_for("login"))

@app.after_request
def after(response):
    print("after_request")
    return response

@app.teardown_request
def teardown(response):
    print("teardown_request")
    return response

三、Flask_Script扩展

  安装:pip install flask_script

from flask import Flask
from flask_script import Manager

app = Flask(__name__)
manager = Manager(app)

@app.route("/")
def index():
    return "index page"

if __name__ == ‘__main__‘:
    manager.run()

执行方式:python flask_script扩展.py runserver -p 8013

参数说明如下:

-?, --help show this help message and exit
-h HOST, --host HOST
-p PORT, --port PORT
--threaded
--processes PROCESSES
--passthrough-errors
-d, --debug enable the Werkzeug debugger (DO NOT use in production
code)
-D, --no-debug disable the Werkzeug debugger
-r, --reload monitor Python files for changes (not 100% safe for
production use)
-R, --no-reload do not monitor Python files for changes
--ssl-crt SSL_CRT Path to ssl certificate
--ssl-key SSL_KEY Path to ssl key

原文地址:https://www.cnblogs.com/yang-2018/p/11019721.html

时间: 2024-10-08 17:25:04

Flask框架 之上下文、请求钩子与Flask_Script的相关文章

Flask框架之异常处理和请求钩子

异常处理 抛出异常 在Flask框架中,我们使用abort()方法,抛出异常信息. 代码如下: from flask import abort # 抛出异常 @app.route('/error') def error(): return abort(404) 捕获和处理异常 在Flask框架中,我们使用@app.errorhandler()装饰器,实现异常的捕获和处理. 代码如下: # 捕获异常 @app.errorhandler(404) def error_action(e): # 必须接

Flask 框架 重定向,捕获异常,钩子方法及使用jsonify在网页返回json数据

Flask 框架中常用到重定向方法来实现路由的跳转 ,路由跳转又分为站内跳转和站外跳转 常用的站内跳转方法为url_for  而常用的站外跳转为redirect 在这里提示一下: 在使用两种方法是须调用相对应的包: redirect对应的为redirect包  而url_for对应url_for 例: 具体代码为: 捕获异常:即在服务器没有相应的时候用来进行友好提示,提高用户体验 具体代码为: 钩子方法:分为第一次请求之前,每一次请求之前和请求之后在后台返回的数据 jsonify:在页面返回js

Flask中的请求钩子

请求勾子在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子. 请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子: before_first_request 在处理第一个请求前执行 before_request 在每次请求前执行 如果在某修饰的函数中返回了一个响应,视图函数将不

Flask之请求钩子

什么是请求钩子?说白了,就是在执行视图函数前后你可以进行一些处理,Flask使用装饰器为我们提供了注册通用函数的功能. before_first_request:在处理第一个请求前执行 before_request:在每次请求前执行 after_request:每次请求之后调用,前提是没有未处理的异常抛出 teardown_request:每次请求之后调用,即使有未处理的异常抛出 from flask import Flask app = Flask(__name__) @app.before_

Flask框架 请求与响应 & 模板语法

目录 Flask框架 请求与响应 & 模板语法 简单了解Flask框架 Flask 框架 与 Django 框架对比 简单使用Flask提供服务 Flask 中的 Response(响应) Flask 中的 Request(请求) Flask 模板语言简单使用 Flask框架参考手册 原文地址:https://www.cnblogs.com/guokaifeng/p/11587311.html

flask请求钩子

请求钩子 作用: 可以 对请求的事件进?行行监听 , ?方便便开发者对请求的各阶段进?行行?一些?自定义处理理 before_request和after_request before_first_request和teardown_request 原文地址:https://www.cnblogs.com/oklizz/p/11370193.html

深入学习Flask框架之视图及路由

在前面一讲中我们学习如何创建一个简单的Flask项目,并做了一些简单的分析.接下来在这一节中就主要来讲讲Flask中最核心的内容之一:Werkzeug工具箱.Werkzeug是一个遵循WSGI协议的Python函数库.WSGI协议在前面的文章中也有提到(点我查看).那Werkzeug有什么作用呢?它其实实现了很多底层的东西,如Request.Response和集成URL请求路由等. 一.Werkzeug的组成: 二.routing模块 routing模块的主要目的是负责实现URL解析.不同的UR

Flask 框架中 上下文基础理念,包括cookie,session存储方法,requset属性,current_app模块和g模块

Flask中上下文,分为请求上下文和应用上下文.既状态留存 ,就是把变量存在某一个地方可以调用 请求上下文:实际就是request和session用法理念,既都是可以存储东西. 应用上下文:既变量共享,就是把东西存储在变量里可以打印预览,应用上下文包括 current_app模块和g模块 cookie方法增,查,删. 注:存储cookie时使用set_coooki方法存储key--calve形式数据,另一个参数max_age 是指定的存活时间. 调用cookie的方法是通过request模块的c

Flask 框架小记

Flask 框架小记 Flask 实例 创建示例的代码 from flask import Flask # __name__ 是模块名, 用于反射导入模块 app = Flask(__name__, import_name, static_url_path=None, static_folder='static', static_host=None, host_matching=False, subdomain_matching=False, template_folder='templates