Flask框架介绍
- 使用flask框架实现web应用得基本功能
- 能够使用flask-restful扩展包实现基于REST风格得接口
- 能够使用flasj-sqlalchemy扩展包完成数据库得常见操作
Flask使用python语言编写得轻量级web框架
Flask本身相当于一个内核,主要实现了路由分发和模板渲染功能,分别继承自Werkzeug 和 Jinja2模块包, 这两个也是Flask框架的核心。
虽然核心精简, 但flask提供了非常好的扩展机制, 开发中的各类需求基本都有对应的官方/第三方扩展可以实现, 甚至连自己动手实现也很简单。
Flask常用扩展包
- Flask-SQLalchemy:ORM操作数据库;
- Flask-RESTful:开发REST API的工具;
- Flask-Session:Session存储;
- Flask-Migrate:管理迁移数据库;
- Flask-Caching:缓存;
- Flask-WTF:表单;
- Flask-Mail:邮件;
- Flask-Login:认证用户状态;
- Flask-OpenID:认证;
Flask-Admin:简单而可扩展的管理接口的框架
Flask-Bable:提供国际化和本地化支持,翻译;
Flask-Bootstrap:集成前端Twitter Bootstrap框架;
Flask-Moment:本地化日期和时间;
框架轻重
- 重量级的框架:包含全家桶式丰富的工具,方便业务程序的快速开发,如Django
- 轻量级的框架:只提供Web框架的核心功能,自由灵活、方便高度定制,如Flask、Tornado
环境安装
# 创建虚拟环境
mkvirtualenv flask_env -p python3
# 安装flask包
pip install flask==1.0.2
新建flask项目
创建 Pure Python 类型的项目,使用之前创建的 flask_env 作为虚拟环境
打开 Pycharm,进入settings , 取消默认的Flask项目关联(避免生成默认配置)
新建文件helloflask.py
导入Flask类
from flask import Flask
创建Flask对象, 接收一个参数__name__,它会指向程序所在的包
# 1.创建Flask应用
app = Flask(__name__)
Flask应用程序实例的 run 方法 启动 WEB 服务器
if __name__ == '__main__':
# 2.运行应用 (启动一个测试服务器, 接收请求并调用对应的视图函数)
app.run()
装饰器的作用是将路由映射到视图函数 index
# 3.定义路由
@app.route('/')
def index():
return 'hello flask'
app.run的参数
可以指定运行的主机IP地址,端口,是否开启调试模式
# host: 绑定的ip(域名) 0.0.0.0
# port: 监听的端口号
# debug: 是否开启调试模式 1> 可以在网页上显示python错误 2> 更新代码后测试服务器自动重启
app.run(host='0.0.0.0', port=8000, debug=True)
from flask import Flask
# 1.创建Flask应用
app = Flask(__name__)
# 3.定义路由
@app.route('/')
def index():
return 'hello flask'
if __name__ == '__main__':
# 2.运行应用 (启动一个测试服务器, 接收请求并调用对应的视图函数)
app.run()
2. 1.x版本的启动方式
使用app.run()当然也行,但是如果项目在服务器上改变端口得话是很不方便得
- flask1.0开始, 类似Django, 通过终端执行封装的脚本命令flask run来运行应用, 不再需要调用app.run()
- 新的形式更加有利于 灵活修改环境配置
export FLASK_APP=xx.py # 指定flask应用所在的文件路径
export FLASK_ENV=development # 设置项目的环境, 默认是生产环境
flask run -h 0.0.0.0 -p 8000 # 启动测试服务器并接受请求
- 环境变量相当于 系统的全局变量, 所有程序可用
# 获取环境变量
export # 查看所有环境变量
echo $环境变量 # 查看指定的环境变量
# 设置环境变量
export 环境变量名=值 # 给本次会话设置环境变量, 一旦终端关闭, 环境变量会清空
# 将环境变量写入配置文件(.bashrc/.bash_profile), 重新打开终端时再次加载环境变量
设置调试模式得环境变量
Pycharm运行flask程序
为了方便测试代码, 代码示例中仍会主要采用app.run的形式, 但实际开发中应该尽量使用 环境变量&终端命令的形式
文档
- 官方文档 https://flask.palletsprojects.com
- 中文翻译 https://dormousehole.readthedocs.io/en/latest/index.html