因为之前一直在项目中使用django, 所以在学习Flask的过程中, 难免对吧django和Flask进行对比,

这一次我发现Flask中的request和session并没有想象的那么简单, 所以就读了一下这一部分的源码,

读完之后对整个过程理解了一番, 好像并没有get到Flask的开发这个这样写的原因什么, 以后再使用Flask

的过程中希望能渐渐的明白这个其中的原因吧, 要是有老铁能指点一二, 那就更好了, 评论区见吧老铁

PS: 我觉得你应该也不知道, 否则你怎么会沦落到看我博客的地步呢, 哈哈

我发现

django中使用request, 这个和request是视图函数传进来的参数, 当用户请求进来后, 根据URL进入不同的视图, 随之

当前请求的request也被传进来了, 所以的django的request的由来很清楚, Flask中的request并非如此, 当你点击request时

会发现, 他是另外一个叫做globals.py中的一个对象, 从名字上就可以看出, 这是一个全局的变量, 而且是在当前模块内

实例化好的一个对象, 都是知道, python的模块导入就是一个天然的单例, 也就是说, 在整个flask程序中就这一个request对象,

不信你看, 有图为证

request到底是怎么回事

要想知道reqeust是怎么回事, 就要从用户的请求进来开始说了,

还有一件事就是当flask启动的时候, 也就是执行run的时候都做了什么, 因为globas这个模块肯定是被加载了, 只要一加载

globals中会有好多对象, 现在只知道这个里面的对象都是去全局的就可以.

werkzeug介绍

 Flask 是一个微型的 Python 开发的 Web 框架,基于Werkzeug WSGI工具箱和Jinja2模板引擎,使用BSD授权。 

看看werkzeug是如何工作的

from werkzeug.wrappers import Response, Request
from werkzeug.serving import run_simple @Request.application
def app(req): # 接受一个request
print(req)
# < Request http: // 127.0.0.1: 8800 / favicon.ico [GET] >
print(req.method)
# GET
print(req.path)
# /
return Response("200 OK!") run_simple(hostname="127.0.0.1", port=8800, application=app)

运行上面的代码, 就会启动一个服务, 浏览器就可以直接访问, 并且返回页面 200 OK!

简单说当请求进来之后就会执行application=app, 也就是对app进行加括号执行, 记住一个加括号, 后面会用到的.

flask上下文管理之存放用户请求高清无码大图

有了上面的问题, 在加上知道了werkzeug是如何接受用户的请求的, 那么就可以看图说话了

记住当接受到请求请求后, werkzeug会对app进行加括号执行

当使用request时又发生了什么

看完上面的图, 就能大概了解, request使用哪里来, 存放了哪里, 那么我们又是怎么使用request的呢, 看下面又一副大图

偏函数的简单了解

源码中用到了一个偏函数, 看看偏函数大概是怎么用的

from functools import partial

def add(a, b):  # 这个函数需要两个参数
return str(a) + str(b) ret = partial(add, "request")
# 偏函数返回一个未执行的函数, 这个函数就是add函数, 并且本来需要两个参数, 现在只要一个参数就可以执行
# 偏函数固定一个add的一个参数为request
# 偏函数的源码看不到, 不过我觉得是直接操作的内容, 将参数传到了函数中
# 要是按照正常的传参的数, 函数一加括号就执行了, 但是偏函数却返回了一个已经传好参数并且未执行的函数
print(ret(" 我是传进来的参数")) # 输出
# request 我是传进来的参数

无码高清大图

Flask的request和session是从哪里来的?的更多相关文章

  1. 1.4 flask request和session

    2019-1-4 18:13:57 越努力,越幸运! 还有121天,flask讲完,还有4天,总时长130天 还有13天就讲完了 一月争取看完!!! 永远不要高估自己! 今天学了request和ses ...

  2. Flask入门request session cookie(二)

    1 HTTP方法分类 1 GET 浏览器告知服务器:只获取页面上的信息并发给我.这是最常用的方法. 2 HEAD 浏览器告诉服务器:欲获取信息,但是只关心消息头 .应用应像处理 GET 请求一样来处理 ...

  3. Flask web开发 处理Session

    本文我们在上篇文章<Flask web开发  处理POST请求(登录案例)>的基础上,来讲述Flask对session的支持. 在上面案例上,我们需要修改和新增如下功能 1.登录成功后的 ...

  4. Flask上下文管理、session原理和全局g对象

    一.一些python的知识 1.偏函数 def add(x, y, z): print(x + y + z) # 原本的写法:x,y,z可以传任意数字 add(1,2,3) # 如果我要实现一个功能, ...

  5. python三大框架之一flask中cookie和session的相关操作

    状态保持 Cookie cookie 是指某些网站为了 辨别  用户身份,进行会话跟踪而储存在用户本地的数据(通常会经过加密),复数形式是 coolies. cookie是由服务器端生成,发送给客户端 ...

  6. flask 基本操作 模板语言 session

    Django web:优点:大而全,ORM models ,model Form ,admin ,csrf ,session缺点:资源浪费 Flask web:优点:小而精,ORM:x , Form: ...

  7. flask框架--cookie,session

    今天我又给大家分享一下怎么用flask框架来实现像淘宝购物车一样存储数据,并且把存储的数据删除,这个方法可以用两个方法都可以做成,一个是cookie,另一个是session. session是依赖于c ...

  8. 【Python】Flask系列-cookie和session笔记

    cookie: 1.cookie出现的原因:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了 ...

  9. flask的cookie和session的简单原理

    在Flask的框架中,自己已经封装了 cookie的respons,request 有存储就有读取及删除,那么就拿购物车来举例 在我们登陆的时候会有之前在购物车存放的物品.也就是说在一个地方为我们保存 ...

随机推荐

  1. CSS布局之传统方法

    传统的页面布局依赖于盒模型+流动模型(flow)+浮动模型(float)+层模型(layer)来实现页面的布局,具体方法是通过盒模型+display属性+float属性+position属性来加以实现 ...

  2. delphi 获取可执行文件的当前路径

    在Delphi SysUtils 单元中有 ExtractFileDir 与 ExtractFilePath两个类似的函数, 两个函数有以下的区别: ExtractFilePath 传回值的最後一个字 ...

  3. javascript 匿名函数及闭包----转载

    网上很多解释,我无法理解,我想知道原理...这篇文章应该可以透彻一点Query片段:view plaincopy to clipboardprint? (function(){      //这里忽略 ...

  4. python 测试:wraps

    任务: 现有两个函数: def print1(): print("I am print1") def print2(): print("I am print2" ...

  5. 在 Linux 中使用 Azure Premium 存储的基本优化指南

    Note 以下测试和结果都是基于 CentOS 6.5.对于其他版本,请参考本文档,并自行进行相关测试. 建议使用最新的内核版本 一般情况下,新的内核版本能解决老版本中存在的问题,添加对新出现硬件的支 ...

  6. 使用js时,如何获取系统当前时间并且得到格式为"yyyy年MM月"的日期

    1.使用js时,如何获取系统当前时间并且得到格式为"yyyy年MM月"的日期: 1 var newdate = new Date(); 2 var nowyear = newdat ...

  7. 【Leetcode】【Medium】Convert Sorted Array to Binary Search Tree

    Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 解题 ...

  8. 安装和测试Kafka

    本文主要介绍如何在单节点上安装 Kafka 并测试 broker.producer 和 consumer 功能. 下载 进入下载页面:http://kafka.apache.org/downloads ...

  9. Python学习---重点模块之pickle

    仅仅支持Python里面的函数等相关功能的实现,而且pickle写入的内容是看不出来的,读取的时候要求有原内容 pickled的写入: import pickle def fun(): print(' ...

  10. JSP的重定向有两种forward和sendRedirect

    jsp:forward重定向 当index.jsp存放在tomcat服务器应用目录下时:D:\Tomcat 7.0\webapps\Spring_shizhan4ban_Chapter05\index ...