一、flask简介
Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。
官网: https://flask.palletsprojects.com/en/1.1.x/
官方文档:
-
Flask-SQLalchemy:操作数据库,ORM;
-
Flask-script:终端脚本工具,脚手架;
-
Flask-migrate:管理迁移数据库;
-
Flask-Session:Session存储方式指定;
-
Flask-WTF:表单;
-
Flask-Mail:邮件;
-
Flask-Bable:提供国际化和本地化支持,翻译;
-
Flask-Login:认证用户状态;
-
Flask-OpenID:认证, OAuth;
-
Flask-RESTful:开发REST API的工具;
-
Flask JSON-RPC: 开发rpc远程服务[过程]调用
-
Flask-Bootstrap:集成前端Twitter Bootstrap框架
-
Flask-Moment:本地化日期和时间
-
Flask-Admin:简单而可扩展的管理接口的框架
可以通过 https://pypi.org/search/?c=Framework+%3A%3A+Flask
二、环境搭建
2.1 创建虚拟环境
# anaconda创建虚拟环境 # conda create -n flask python=3.8 flask==1.1.4 # 进入/切换到指定名称的虚拟环境,如果不带任何参数,则默认回到全局环境base中。 # conda activate <虚拟环境名称> # 退出当前虚拟环境 # conda deactivate
2.2 安装flash
如果上面常见虚拟环境时已安装,下面可以不安装
pip install flask==1.1.4
manage.py,代码:
from flask import Flask app = Flask(__name__) @app.route(rule="/") def index(): return "hello,<h1>flask</h1>!!!" # 加载项目配置 class Config(object): DEBUG = True app.config.from_object(Config) if __name__ == '__main__': # flask运行过程中,所有的路由最终都会被注册到url_map里面。 print( app.url_map ) app.run(host="0.0.0.0",port=5000)
代码分析:
# 导入Flask类 from flask import Flask """ import_name Flask程序所在的包(模块),传 __name__ 就可以 其可以决定 Flask 在访问静态文件时查找的路径 static_path 静态文件访问路径(不推荐使用,使用 static_url_path 代替) static_url_path 静态文件访问路径,可以不传,默认为:/ + static_folder static_folder 静态文件存储的文件夹,可以不传,默认为 static template_folder 模板文件存储的文件夹,可以不传,默认为 templates """ app = Flask(import_name=__name__) # 编写路由视图 # flask的路由是通过给视图添加装饰器的方式进行编写的。当然也可以分离到另一个文件中。 # flask的视图函数,flask中默认允许通过return返回html格式数据给客户端。 @app.route('/') def index(): return "<h1>hello world</h1>" # 加载项目配置 class Config(object): # 开启调试模式 DEBUG = True # flask中支持多种配置方式,通过app.config来进行加载,我们会这里常用的是配置类 app.config.from_object( Config ) # 指定服务器IP和端口 if __name__ == '__main__': # 运行flask app.run(host="0.0.0.0", port=5000)