Flask 是一个Web应用框架,我也就是一边看书,一边写博文做记录

这本书:

首先安装Flask ,和配置环境,参考这边博客:

然后就开始学习Flask 了。

1.Application and Request Context(上下文)
在Flask 中,一般一个view function(视图函数)会处理一个请求
Flask 中提供request context.保证全局只有一个线程的request,而不会同时出现两个request.

Application and Request Context 一共有四种

current_app (Application context)
g (Application context)
request (Request context)
session (Request context)

2.Request Dispatching(请求发送)
当服务器接受一个请求,Flask通过建立一个URL mapping ,为请求找到相应的视图函数。
Flast 利用 app.route 建立这个Map.

>>> from hello import app
>>> app.url_map
Map([<Rule '/' (HEAD, OPTIONS, GET) -> index>,
<Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>,
<Rule '/user/<name>' (HEAD, OPTIONS, GET) -> user>])

其中 /static/<filename> route 是Flask中特有的。

3.Request Hooks(请求挂钩)
在接受请求或者处理完请求之后,都要执行一段代码。比如请求发送之前,我们需要连接一下数据库。所以
我们可以写一个连接数据库的通用函数。Flask 中Request hook function 提供了这个功能
有四种hook 函数

before_first_request: 当接受第一个请求之前要执行的代码。
before_request :接受每一个请求之前要执行的代码。
after_request:处理完每一个请求之后要执行的代码,只有请求成功处理之后。
teardown_request:处理完每一个请求之后要执行的代码,请求处理失败之后也可以执行的。

在 request hook function 和view function 之间的数据共享是通过全局的g context来完成的。
例如登录之前,通过before_request请求连接数据库的获取用户的信息 g.username。然后在
view function 中就可以调用g.username

4.Responses(回应)
每个view function 都会返回一个value。可以返回html 页面。
但是http 协议要求我们还需要返回一个状态,比如200 就是成功执行请求,400 就是执行请求发生错误。

for example
app.route('/')
def index():
return '<h1>error request<h1>,400'

view function 可以返回两个,也可以返回三个(value,status,headers)
Flask 也提供了专门一个函数make_response()

@app.route('/')
def index2():
response=make_response('<h1>This document carries a cookie!</h1>')
response.set_cookie('answer','')
return response

除此之外,还有两种response方式:

redirect(重定向) 实际上一个返回三个值的response

from flask import redirect
@app.route('/')
def index():
return redirect('http://www.example.com')

abort(用于抛出错误)

from flask import abort
@app.route('/user/<id>')
def get_user(id):
user = load_user(id)
if not user:
abort(404)
return '<h1>Hello, %s</h1>' % user.name

Flask 学习笔记的更多相关文章

  1. Python Flask学习笔记之模板

    Python Flask学习笔记之模板 Jinja2模板引擎 默认情况下,Flask在程序文件夹中的templates子文件夹中寻找模板.Flask提供的render_template函数把Jinja ...

  2. Python Flask学习笔记之Hello World

    Python Flask学习笔记之Hello World 安装virtualenv,配置Flask开发环境 virtualenv 虚拟环境是Python解释器的一个私有副本,在这个环境中可以安装私有包 ...

  3. Flask 学习笔记(二):RESTful API

    概括 URL:需要操作的对象,也就是资源 HTTP method:我要对该对象做什么(POST 增.DELETE 删.GET 查.PUT 和 PATCH 改) HTTP status code:操作的 ...

  4. 【Flask】Flask学习笔记(一) 应用基本结构

    初始化 使用前必须创建一个应用实例 from flask import Flask app = Flask(__name__) 路由和视图函数 请求流程 客户端(web浏览器)-->  web服 ...

  5. flask学习笔记(1)-虚拟环境安装

    Mac(类Linux): pip install virtualenv mkdir testvirtualenv cd testvirtualenv virtualenv flask-env#创建虚拟 ...

  6. Flask学习笔记(3)--路由

    0x01 参数传递 传递参数的语法是: /<参数名>/,然后在视图函数中,也要定义同名的参数. 参数的数据类型: 1.如果没有指定具体的数据类型,那么默认就是使用string 数据类型. ...

  7. Flask学习笔记(2)--最简单的小应用

    0x01 第一个小程序 PyCharm新建一个flask项目,第一个小程序,我们来看一下 #引入flask类 from flask import Flask #将Flask对象实例化 app = Fl ...

  8. Flask 学习笔记(1)--环境安装

    Flask 官网:http://flask.pocoo.org/ Flask文档:http://docs.jinkan.org/docs/flask/ 0x01 安装方式 安装步骤很简单,就是这个样子 ...

  9. pythonweb框架Flask学习笔记05-简单登陆

    源代码从下链接引用:https://www.cnblogs.com/felixwang2/p/9261493.html 我使用的是python3.6 在运行代码的时候遇到了以下问题 session[' ...

随机推荐

  1. Atlas-手淘组件化框架的前世今生和未来的路

    今天手淘技术团队宣布正式开源它们的容器框架Atlas,项目地址: https://github.com/alibaba/atlas 同时他们还推出了项目官网,上线了技术文档: http://atlas ...

  2. Erlang模块gen_server翻译

    gen_server 概要: 通用服务器行为描述: 行为模块实现服务器的客户端-服务器关系.一个通用的服务器进程使用这个模块将实现一组标准的接口功能,包括跟踪和错误报告功能.它也符合OTP进程监控树. ...

  3. Vue学习之路---No.6(分享心得,欢迎批评指正)

    我们还是先回顾一下上一次的重点: 1.事件绑定,我们可以对分别用方法和js表达式对事件进行处理 2.当方法名带括号的时候,在方法中一定要传参:而不带括号的时候,vm会自动配置默认event 3.各类事 ...

  4. Caliburn.Micro - 框架搭建

    简介:Caliburn.Micro是Caliburn的一个轻量级版本开源架构,可以用于wpf,sliverlight,wp7等,和注重模块化的Prism比起来也有许多优点,具体比较可以参考 此文 ht ...

  5. cuda编程学习3——VectorSum

    这个程序是把两个向量相加 add<<<N,1>>>(dev_a,dev_b,dev_c);//<N,1>,第一个参数N代表block的数量,第二个参数1 ...

  6. javascript . 02 break和continue、while、数组、冒泡排序

    1.1 知识点 NaN是number类型 null是object类型 /**  + 回车  多行注释 table 会为内部的tr td 自动补齐闭合标签 1.2 循环结构 1.2.1  Break和c ...

  7. react+webpack开发环境配置

    react是目前非常热门的前端框架,提倡组件化开发.所谓的组件,简单理解,就是一个独立的页面部件(包括页面模版,样式,逻辑等),它是一个独立的整体. webpack,是一个模块打包工具,其主要功能,就 ...

  8. WIMP环境搭建

    h1 { color: #3366ff } p { font-size: 16px } body { background-color: rgb(200,200,169) } 环境说明 系统:wind ...

  9. 大数据量场景下storm自定义分组与Hbase预分区完美结合大幅度节省内存空间

    前言:在系统中向hbase中插入数据时,常常通过设置region的预分区来防止大数据量插入的热点问题,提高数据插入的效率,同时可以减少当数据猛增时由于Region split带来的资源消耗.大量的预分 ...

  10. FitVids,一个轻视频插件,操作简单

    最近在找一个视频插件,偶尔看见一个口碑啥的都不错的插件,FitsVids. fitvids.js 是个轻量级,易于使用的 jQuery 插件,用来在网页上播放指定宽度的嵌入视频.Fitvides.js ...