因为之前一直在项目中使用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. Netty入门2之----手动搭建HttpServer

    在上一章中我们认识了netty,他有三大优点:并发高,传输快,封装好.在这一章我们来用Netty搭建一个HttpServer,从实际开发中了解netty框架的一些特性和概念. netty.png 认识 ...

  2. asp.net ashx导出excel到前台

    最近有一个项目使用以前的ashx,不能使用FileResult,只有通过response返回拼接好的字符串.但是通过查阅资料拼接的字符串总是提示文件格式不匹配,虽然能正常打开,但是体验很不好,在此总结 ...

  3. Leetcode- Find Minimum in Rotated Sorted Array-ZZ

    http://changhaz.wordpress.com/2014/10/15/leetcode-find-minimum-in-rotated-sorted-array/ Suppose a so ...

  4. 设计模式:享元(FlyWeight)模式

    设计模式:享元(FlyWeight)模式 一.前言     享元(FlyWeight)模式顾名思义,既是轻量级的,原因就是享元,共享元素,这里的元素指的是对象.如何共享对象,那就是在检测对象产生的时候 ...

  5. gmock使用、原理及源码分析

    1      初识gmock 1.1      什么是Mock 便捷的模拟对象的方法. 1.2      Google Mock概述 google mock是用来配合google test对C++项目 ...

  6. 基于SAP Kyma的订单编排增强介绍

    尽管有一万个舍不得,2018年还是无可挽回地离我们远去了. 唯有SAP成都研究院的同事和我去年在网络上留下的这些痕迹,能证明2018年我们曾经很认真地去度过每一天: SAP成都研究院2018年总共87 ...

  7. Windows+linux命令大集合

    net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" /user: ...

  8. QuantLib金融库的简易安装

    最近在弄毕设,研究关于固定收益债券定价方面的知识,需要使用到QuantLib这个Python金融库,但是这是一个C++编译的库,官网也只给出了源代码,安装起来十分繁琐,所以在网上找了一个简易的安装方法 ...

  9. Codeforces Round #423 (Div. 2)

    codeforces 423 A. Restaurant Tables [水题] //注意,一个人选座位的顺序,先去单人桌,没有则去空的双人桌,再没有则去有一个人坐着的双人桌.读清题意. #inclu ...

  10. 【转】python通过文件头判断文件类型

    刚刚看到一个好玩的程序,拉过来.原文地址:https://www.ttlsa.com/python/determine-file-type-by-the-file-header/ 侵权删. ===== ...