当前位置: 首页 > news >正文

Flask---日常笔记1

Flask---日常笔记

(自己学习flask的过程中,一些比较重要的知识点,记录了下来,大家可以参考一下.)

Flask框架主要的特点是轻巧,简介,扩展性强;核心就是 Werkzeug(路由模块) ,模板引擎则使用 Jinja2 。

Flask内置的6种转换器:

‘path’  ‘string’  ‘any’  ‘int’  ‘float’  ‘uuid’

Josn xml 的区别:首先他们都是用来数据交互的,其次josn 更加轻量些

 

Flask中有两种上下文,请求上下文和应用上下文。

上下文:相当于一个容器,他保存了Flask程序运行过程中的一些信息。

 

 

请求上下文(request context)

request和session都属于请求上下文对象。

request:封装了HTTP请求的内容,针对的是http请求。举例:user = request.args.get('user'),获取的是get请求的参数。

(通俗来说:Request主要用来获取客户端发送过来的一些参数)

 

session:用来记录请求会话中的信息,针对的是用户信息。举例:session['name'] = user.id,可以记录用户信息。还可以通过session.get('name')获取用户信息。

(通俗来说:Session主要用来实现一些用户的会话信息)

 

 

应用上下文(application context)

current_app和g都属于应用上下文对象。

current_app:表示当前运行程序文件的程序实例。我们可以通过current_app.name打印出当前应用程序实例的名字。

(通俗来说:Current_app代表当前程序运行实例,只要程序没有暂停终止,他会一直存在, 可以帮助我们记录项目日志)

g:处理请求时,用于临时存储的对象,每次请求都会重设这个变量。比如:我们可以获取一些临时请求的用户信息。

(通俗来说:g对象和requestsession比较像,请求过程中帮助我们创建,请求结束后销毁,是起到一个临时存储的作用)

  • 当调用app = Flask(_name_)的时候,创建了程序应用对象app;
  • request 在每次http请求发生时,WSGI server调用Flask.call();然后在Flask内部创建的request对象;
  • app的生命周期大于request和g,一个app存活期间,可能发生多次http请求,所以就会有多个request和g。
  • 最终传入视图函数,通过return、redirect或render_template生成response对象,返回给客户端。

区别: 请求上下文:保存了客户端和服务器交互的数据。 应用上下文:在flask程序运行过程中,保存的一些配置信息,比如程序文件名、数据库的连接、用户信息等。

(应用上下文生命周期比请求上下文的生命周期长)

 

 

请求钩子

在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如:在请求开始时,建立数据库连接;在请求结束时,指定数据的交互格式。为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子。

请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子:

before_first_request:在处理第一个请求前运行。

before_request:在每次请求前运行。

after_request:如果没有未处理的异常抛出,在每次请求后运行。

teardown_request:在每次请求后运行,即使有未处理的异常抛出。

转载于:https://www.cnblogs.com/crss/p/8610916.html

相关文章:

  • 服务发现的基本原理
  • Win7无法访问Win2003共享文件夹的解决办法
  • bash: php: command not found
  • 贪心算法《最短路径》
  • javascript 封装一个class选择器
  • ubuntu 环境下的QT程序打包
  • dom4j解析xml
  • sublime text less安装踩坑图文讲解(less无法生成css)
  • PHP中遍历关联数组的方法
  • opencv再学习之路(五)---灰度直方图显示
  • 在windows2003上部署MVC4.0需要具备的环境
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • ContentProvider介绍
  • 10.19 iptables规则备份和恢复10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作...
  • C# 屏幕监控 自动截屏程序 主窗体隐藏,仅在进程中显示
  • [nginx文档翻译系列] 控制nginx
  • [笔记] php常见简单功能及函数
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【个人向】《HTTP图解》阅后小结
  • Brief introduction of how to 'Call, Apply and Bind'
  • docker容器内的网络抓包
  • eclipse(luna)创建web工程
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • java第三方包学习之lombok
  • Java应用性能调优
  • JS笔记四:作用域、变量(函数)提升
  • leetcode46 Permutation 排列组合
  • Mocha测试初探
  • React as a UI Runtime(五、列表)
  • SegmentFault 2015 Top Rank
  • Shadow DOM 内部构造及如何构建独立组件
  • Vue UI框架库开发介绍
  • 翻译--Thinking in React
  • 如何解决微信端直接跳WAP端
  • 三分钟教你同步 Visual Studio Code 设置
  • 思考 CSS 架构
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 译自由幺半群
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • #前后端分离# 头条发布系统
  • ()、[]、{}、(())、[[]]命令替换
  • (52)只出现一次的数字III
  • (八)Flask之app.route装饰器函数的参数
  • (补)B+树一些思想
  • (动态规划)5. 最长回文子串 java解决
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (四)鸿鹄云架构一服务注册中心
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (算法)前K大的和
  • (算法)求1到1亿间的质数或素数
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .net解析传过来的xml_DOM4J解析XML文件
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作