Python轻量级Web开发框架-Flask¶
Python中存在众多Web开发框架:Flask、Django、Tornado、Webpy、Web2py、Bottle、Pyramid、Zope2等,现在Python领域最主流的两个Web开发框架是Django和Flask。
Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。
flask的 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。Itsdangrous(token加密模块),Click(终端命令管理工具),flask内核本身,这5个核心模块组成 Flask 框架。
官方资料
参考资料
https://zhuanlan.zhihu.com/p/637789895?utm_id=0 https://www.cnblogs.com/ecjtuzq/p/16700579.html
Flask特点¶
2.1 微框架
Flask旨在保持核心简单易于扩展 不会替用户做出太多决策 选项(如使用何种模板引擎)通常有多个,用户容易替换
2.2 约定优于配置
设计不好的框架通常需要多个配置文件,每一个文件有许多设置项,程序员需记忆大量的参数配置。
Flask遵循约定优于配置(Convention Over Configuration),也称作按约定编程,是一种软件设计范式。目的在于减少开发人员需要做出决定的数量,从而将开发变的简单,而不失去其中的灵活性,开发人员仅需要规定应用中不符合约定的部分。
Flask常用第三方扩展包:¶
Flask-SQLAlchemy:操作数据库,ORM; Flask-script:终端脚本工具,脚手架; ( 淘汰,官方内置脚手架:Click) Flask-migrate:管理迁移数据库; Flask-Session:Session存储方式指定; Flask-Mail:邮件; Flask-Login:认证用户状态;(django内置Auth模块,用于实现用户登录退出,) Flask-OpenID:认证, OAuth;(三方授权,) Flask-RESTful:开发REST API的工具; Flask JSON-RPC: 开发json-rpc远程服务[过程]调用 Flask-Bable:提供国际化和本地化支持,翻译; Flask-Moment:本地化日期和时间 Flask-Admin:简单而可扩展的管理接口的框架 Flask-Bootstrap:集成前端Twitter Bootstrap框架(前后端分离,除了admin站点,基本不用这玩意) Flask-WTF:表单生成模块;(前后端分离,csrf集成在这个模块中,除了admin站点,基本不用这玩意) Flask-Marshmallow:序列化(类似djangorestframework的序列化器)
可以通过 https://pypi.org/search/?c=Framework+%3A%3A+Flask 查看更多flask官方推荐的扩展
虚拟环境的创建¶
1、
2、
3、安装
pip install flask=="版本号" # 安装对应"版本号"版本
pip install flask # 安装最新版本
创建Flask项目¶
创建Flask项目与django项目不同,所用目录均为自己创建。我们需要创建项目目录文件夹,在项目目录中创建入口文件。
运行flask提供的测试web服务¶
开启flask的web服务需要:Flask实例化,运行服务,route绑定路由与视图关系 三个核心步骤。
4.1 代码展示
# 1.导入flask核心类
from flask import Flask
# 2.初始化web应用实例化对象
app = Flask(__name__)
# 4.通过实例化对象提供的route装饰器绑定路由与视图函数的关系
app.route('/')
def index():
# 5.flask 默认支持函数式视图(FBV),函数名不能重复
# 视图函数的返回值将被flask包装成响应对象的HTML文档内容,返回给客户端
return '<h1>hello flask</h1>'
if __name__ == '__main__':
# 3.运行flask提供的测试web服务程序
app.run(debug=True)
# debug开启调试模式
4.2 Flask类的实例化参数
import_name Flask程序所在的包(模块),传 name 就可以其可以决定 Flask
在访问静态文件时查找的路径
static_path 静态文件存储访问路径(不推荐使用,使用 static_url_path 代替)
static_url_path 静态文件的url访问路径,可以不传,默认为:/ + static_folder
static_folder 静态文件存储的文件夹,可以不传,默认为 static
template_folder 模板文件存储的文件夹,可以不传,默认为 templates
pycharm中flask项目指定ip和端口号运行¶
run-Edit-Configuration 中,找到Additinal options栏,添加运行时附加参数,具体如下:
1、"编辑配置"
2、配置命令行参数
--host=127.0.0.1 --port=9101
/usr/bin/python3 -m flask run --host=127.0.0.1 --port=9101


