目录
[TOC]
HTTP 通信过程与框架
web 开发各个节点关系图
虚拟环境安装
详细笔记:虚拟环境笔记
第一个 Flask 实例
app 的创建 |
from flask import Flask |
给 Flask 项目添加配置
# 第一种方式:从对象类中加载 flask 配置信息(推荐) |
json 数据格式
jsonify(flask 模块,推荐使用) |
from flask import Flask, jsonify |
重定向、自定义状态码
from flask import Flask, redirect, url_for |
正则匹配路由(转换器)
1. 普通转换器<参数类型:参数> |
to_python() 图解
to_url() 图解
from flask import Flask, url_for
from werkzeug.routing import BaseConverter
app = Flask(__name__)
# 1. 自定义正则配置类
class RegexConverter(BaseConverter):
# 将正则规则赋值给 regex,BaseConverter 就会自动帮你去完成正则配置
# regex = '[0-9]{6}'
# BaseConverter 这个类帮我们去传入了一个属性 map :路由映射
# 我们只需要负责传入 re 正则字符串即可
def __init__(self, map, re):
super(RegexConverter, self).__init__(map)
self.regex = re
def to_python(self, value):
print('拦截 to_python value = %s' % value)
# 可以拦截自己处理,但是一般不这么做
return value
def to_url(self, value):
print('拦截 to_url value = %s' % value)
return value
# 2. 注册
# { re : RegexConverter }
app.url_map.converters['re'] = RegexConverter
# 127.0.0.1:5000/user/123456 --> [0-9]{6}
# @app.route('/user/<re:user_id>')
# 127.0.0.1:5000/user/1234 --> [0-9]{4}
# 3. 使用 <re(正则字符串):变量名>
@app.route('/user/<re("[0-9]{4}"):user_id>')
def user(user_id):
return 'user user_id = %s' % user_id
# to_url 拦截
@app.route('/redirect_user')
def redirect_user():
return '<a href="%s">redirect_user</a>' % url_for('user', user_id='1001')
@app.route('/')
def index():
return 'index'
if __name__ == '__main__':
app.run('0.0.0.0', 5000, debug=True)
异常捕获
from flask import Flask, abort, redirect |
请求钩子
在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: |
from flask import Flask, request |
装饰器路由具体实现
1. Flask 有两大核心:Werkzeug 和 Jinja2 |
request 属性
request 就是 flask 中代表当前请求的 request 对象,其中一个请求上下文变量 |
属性 | 说明 | 类型 |
---|---|---|
data | 记录请求的数据,并转换为字符串 | * |
form | 记录请求中的表单数据 | MultiDict |
args | 记录请求中的查询参数 | MultiDict |
cookies | 记录请求中的 cookie 信息 | Dict |
headers | 记录请求中的报文头 | EnvironHeaders |
method | 记录请求使用的 HTTP 方法 | GET/POST |
url | 记录请求的 URL 地址 | string |
files | 记录请求上传的文件 | * |
from flask import Flask, request |
状态保持 cookie/session
因为 http 是一种无状态协议,浏览器请求服务器是无状态的。 |
1. cookie |
上下文
上下文:相当于一个容器,保存了 Flask 程序运行过程中的一些信息。 |
Flask-Script 扩展
通过使用 Flask-Script 扩展,我们可以在 Flask 服务器启动的时候,通过命令行的方式传入参数。 |