一、Flask入门
1.1 Flask介绍
Python 实现的 Web 开发微框架
小而美,丰富的周边扩展
1.2 Flask安装
使用pip命令安装:
pip install flask
验证:
>>> import flask
>>> flask.__version__
'1.0.2'
1.3 第一个Flask程序
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!'
参数__name__: 表示Flask应用的主模块或包的名称。Flask使用该参数确定应用的位置,然后找到应用中其他文件的位置,如网页中的图片目录,模板目录.
装饰器app.route(): 表示一个路由配置,即:用户在浏览器输入URL,使用对应的函数处理其中的业务逻辑.
1.4 MTV模型及扩展
模型Model:Flask-PyMongo/Flask-MongoKit Flask-SQLAlchemy
视图View:Flask-WTF/bootstrap-flask/Flask-Uploads
模板Template:Jinja2
1.5 启动选项及调试
启动服务器
步骤1:设置环境变量Windows:
set FLASK_APP=xxx.py
*inux: export FLASK_APP=xxx.py
步骤2: flask run 启动内置web服务器
指定IP及端口:flask run --host=0.0.0.0 --port=8001 或:flask run -h 0.0.0.0 p 8001
开启调试模式
代码修改后服务器自动重启
步骤1:设置环境变量
Windows: set FLASK_ENV=development
*inux: export FLASK_ENV=development
步骤2: flask run 启动内置web服务器
或者直接执行xxx.py(v1.0以前)
步骤1:在文件中添加启动代码
if __name__ == '__main__':
app.run(debug=True)
步骤2: python xxx.py
1.6 url配置及路由
方式一:使用装饰器
@app.route(url_name, methods) 示例:@app.route('/login', methods=['GET', 'POST'])
方式二:使用API配置
app.add_url_rule(url, url_name, view_name)
匹配整个文字 @app.route('/hello')
传递参数 @app.route('/user/<username>')
指定参数类型 @app.route('/post/<int:post_id>')
url参数类型 string(接受任何不包含斜杠的文本(默认值)), int, float, path(类似 string ,但可以包含斜杠), uuid(接受 UUID 字符串)
查看URL规则列表 app.url_map
URL逆向解析(根据名称解析成URL字符串)
url_for(url_name, **kwargs)
静态文件( js/css/图片)引用url_for('static', filename='style.css')
1.7 视图函数中获取页面的值
URL中的值
@app.route('/page/<page>')
def list_user(page):
URL中的值为可选
@app.route('/page/<page>')
def list_user(page=None):
1.8 请求-响应及上下文对象
请求上下文对象:
request:请求对象,封装了客户端发出的HTTP请求中的内容
session:用户会话(dict),各请求之间的数据共享
应用上下文对象:
current_app:当前应用的实例
g:处理请求时的临时存储对象,每次请求都会重设这个变量
在分派请求之前激活应用上下文和请求上下文,在请求处理完成后将其删除。
请求报文常用参数
method: 请求的类型(GET/POST/OPTIONS等)
form: POST请求数据dict
args: GET请求数据dict
values: POST请求和GET请求数据集合dict
请求报文常用参数
files: 上传的文件数据dict
cookies: 请求中的cookie dict
headers: HTTP请求头
请求钩子
before_first_request
服务器初始化后第一个请求到达前执行
before_request
每一个请求到达前执行
after_request
每次请求处理完成后执行,如果请求过程中产生了异常,则不执行
teardown_request
每次请求处理完成之后执行,如果请求过程中产生了异常也执行
响应
可以是字符串
可以是元组(tuple):(response, status, headers)或(response, headers)
响应元组
response——响应内容
status——响应状态码
headers——响应头信息
使用make_response代替
1.9 重定向等内部视图
redirect()实现重定向
abort()处理错误