flask web development 阅读笔记

在flask应用中,所有的flask应用都必须创建一个应用实例。web服务器把它接收的来自客户端的请求通过WSGI的协议传递给这个对象以进行处理。这时候,它会提供一种叫上下文的神奇环境,它能让一些对象可以全局可见,这样你的视图函数就可以去访问这些对象做些处理,而又在同时有那么多请求时确保线程安全。

flask里有两种上下文,应用上下文和请求上下文,这两种上下文里暴露出了4种变量:


应用上下文

current_app 活动应用程序的应用实例

应用上下文

g 在处理请求时临时存储数据,每次请求都会被重设

请求上下文

request request对象,封装了客户端发出的http请求的内容

请求上下文

session 用来存储值的字典,这些值在请求中是被记住的

flask在调度每个请求前都会push这两种上下文,而请求被处理后又被移除。应用上下文被push时它对应的两个变量就可以被线程访问了,请求上下文也是一样的道理。当然,假如这些上下文没有被激活的话,访问这些变量就会引发错误了。

举个例子:

>>>from flask import Flask, current_app
>>>app = Flask(__name__)
>>>current_app
Traceback (most recent call last):
...
RuntimeError: working outside of application context
>>>app_ctx = app.app_context()
>>>app_ctx.push()
>>>current_app.name
‘__main__‘
>>>app_ctx.pop()
时间: 2024-08-26 09:36:40

flask web development 阅读笔记的相关文章

《Flask Web Development》学习笔记---chapter4 Web Forms

1.  我们用 wrapper了WTForms的Flask-WTF扩展来处理表单生成和验证. 2.  Cross-Site Request Forgery (CSRF) 保护 配置config,'SECRET_KEY' 3. Form class definition from flask.ext.wtf import Form from wtforms import StringField, SubmitField from wtforms.validators import Required

Flask Web Development - Flask 模板1 - 模板机制&Jinja2引擎

节选自PartI Chapter3,这个chapter主要讲模板工作原理,这里讲的就是Jinja2这个模板,另外还提到了Flask-Bootstrap及Flask-Moment两个插件,前者对Flask使用Bootstrap做了些封装,后者对moment.js做了些封装.内容较多,估计分开搞. 模板存在的意义 可维护性高的代码是结构良好且整洁的. 当用户在网站注册一个账户时,他在表单里填入邮箱跟密码,并点击提交按钮.在server端就收到一个包含这些数据的request,再由Flask分发到相应

Flask Web Development - Flask插件机制&Flask-Script

本节取自part I chapter 2的后半部分,跳过了关于request与response具体交互设计细节内容.主要通过Flask-Script插件让读者对于插件系统有个简单认识. Flask注重拓展性,社区里已经有很多插件可供选择,当然也可以使用python标准库或者其他的各种库. Flask-Script Flask-Script这个插件,是用来增加Flask应用的命令行参数的,它本身自带了一些通用的选项,也支持自定义的命令.这功能可能类似于python标准库中的argparse. 之前

Flask Web开发读书笔记

1.Flask的两个主要依赖: 路由.调试和Web服务器网关接口(Web Server Gateway Interface,WSGI)子系统由Werkzeug提供. 模板系统由Jinja2提供. Werkzeug功能: HTTP头解析与封装 易于使用的request和response对象 基于浏览器的交互式JavaScript调试器 与 WSGI 1.0 规范100%兼容 支持Python 2.4-Python 2.7 (Python 3.0实验性支持) 支持Unicode 支持基本的会话管理及

《Flask web开发》笔记5:大型程序的结构&用户认证Flask-Login

一.学习的内容: 1.工厂函数的定义: 2.蓝本的注册和蓝本文件结构; 3.Werkzeug实现密码散列如何实现: 4.Flask_login的用法: 以上内容通过代码的形式展示: 二.工程的文件结构: |-falsky/ |-app/ |-__init__.py //初始化.工厂函数.注册蓝本等 |-models.py //定义数据库 |-templates/ |-base.html //基本的模板 |-auth/  //蓝本的模板,这样不会跟其他蓝本弄混 |-login.html |-wel

《Flask web开发》笔记4:数据库

一.实现功能:通过web表单生成登录界面.当输入的用户名不在后台数据库里时,加进去:在时,显示Happy see you again样式: 1.数据库引擎:MySQL (安装没有要求路径,我是用之前的没动) 2.数据库框架: Flask-SQLAlchemy(书上推荐,直接pip install  Flask-SQLAlchemy 就行) 二. Flask-SQLAlchemy建一个简单的表: aa.py: # coding: utf-8 from flask import Flask from

java web开发阅读笔记:第一章

学习该书前所用推荐书籍<名师讲坛-java开发实战经典> 一web开发前奏 1.1网页发展 首先搞懂. 1.HTTP:超级文本传输协议,是一种通讯协议. 通过这个网络协议WW浏览器与WWW服务器之间的通讯进行规定,并且通过这个协议我们可以浏览网页,通过网页从客户端写入信息,从服务端得到信息.而通常的HTTP消息包括"客户端->服务端"与"服务端->客户端"的消息传送,图解HTTP协议的功能: 是在客户端通过浏览器根据HTTP协议中向服务器端发

构建高性能web站点-阅读笔记(一)

看完前9章,也算是看完一半了吧,总结一下. 郭欣这个名字或许并不响亮,但是这本书写的确实真好!百度一下他的名字也能够看到他是某些公司的创始人和投资者,当然他本人必定是大牛无疑. 从网页的动静分离到网络带宽限制,然后是页面缓存.浏览器缓存,web服务器缓存,再到反向代理,web应用分离,整个流程下来厘清了架构web的所有层面,可以说到目前为止是我读过的最好的一本web架构书.书中都是一些概念和经验之谈,无法具体总结,也就只能写个总结吧,以表示自己在读或者读过.

《Flask web开发》笔记2:模板---继承、bootstrap

前言:今天重新梳理了一下前端方面的知识,发现学习东西还是要用,不然忘得快,废话不多说,开始!! 一.模板继承 1.概念:   书上说,模板继承,类似Python上的继承: 其实个人觉得和所有继承都一样. 2.应用场景:当我们写一系列类似的jinja模板的时候发现,我们总是在重复做些无用的操作,{%%}这东西敲得也蛮累的,这时候就需要引入模板继承: 3.例子: 步骤1. 先建立一个模板,作为 '基类': jilei.html: <html> <head> {% block head