Flask开发文档
一、Flask介绍
1、flask
Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架。
Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。
其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。这两个也是 Flask 框架的核心。
最新版本 1.0.2
2、Flask与Django框架对比
2.1 flask与django哪个框架好?
- 1.可能没有最好的工具,只有更合适的工具。
- 2.轻重对比
- Flask:轻量级的框架,只提供框架的核心功能
- Django:重量级的框架,提供了丰富的工具、组件
- 3.选择上
- Flask:自由、灵活、高度定制
- Django: 快速实现业务 、不考虑技术选型,越简单直接越好
2.2 Flask与Django对比
django提供了:
- django-admin快速创建项目工程目录
- manage.py 管理项目工程
- orm模型(数据库抽象层)
- admin后台管理站点
- 缓存机制
- 文件存储系统
- 用户认证系统
而这些,flask都没有,都需要扩展包来提供
3、Flask常用的拓展包
- Flask-SQLalchemy:操作数据库;
- Flask-script:插入脚本;
- Flask-migrate:管理迁移数据库;
- Flask-Session:Session存储方式指定;
- Flask-WTF:表单;
- Flask-Mail:邮件;
- Flask-Bable:提供国际化和本地化支持,翻译;
- Flask-Login:认证用户状态;
- Flask-OpenID:认证;
- Flask-RESTful:开发REST API的工具;
- Flask-Bootstrap:集成前端Twitter Bootstrap框架;
- Flask-Moment:本地化日期和时间;
- Flask-Admin:简单而可扩展的管理接口的框架
4、Flask官方文档
二、工程搭建
1、环境安装
- 创建虚拟环境
mkvirtualenv flask - p python3
workon # 进入虚拟环境、查看所有虚拟环境
deactivate # 退出虚拟环境
- 安装Flask
使用的是1.0.2版本
pip install flask
2、Flask的第一个程序
创建helloworld.py文件
# 导入Flask类
from flask import Flask
# Flask类接收一个参数__name__
app = Flask(__name__)
# 装饰器的作用是将路由映射到视图函数index
@app.route("/")
def index():
return "Hello World"
# flask应用程序实例的run方法启动服务器
if __name__ == "__main__":
app.run()
启动运行
python helloworld.py
3、参数说明
3.1 Flask对象初始化参数
- import_name
- flask程序所在的包(模块),传
__name__
就可以 - 可以决定flask在访问静态文件时查找的路径
- flask程序所在的包(模块),传
- static_url_path
- 静态文件访问路径,可以不传,默认为
/ + static_folder
- 静态文件访问路径,可以不传,默认为
- static_folder
- 静态文件存储的文件夹,可以不传,默认为
static
- 静态文件存储的文件夹,可以不传,默认为
- template_folder
- 模板文件存储的文件夹,可以不传,默认为
templates
- 模板文件存储的文件夹,可以不传,默认为
修改参数示例:
app = Flask(__name__, static_url_path="/s", static_folder="folder")
3.2 应用程序配置参数
- 应用程序配置参数设置的是一个web应用工程的相关信息,比如:数据库的连接信息,日志的配置信息等。
- 作用:集中管理项目的所有配置信息。
- 使用方式:
- Django将所有配置信息都放到了settings.py文件中,而Flask将配置信息保存到了
app.config
属性中,该属性可以按照字典类型进行操作。
- Django将所有配置信息都放到了settings.py文件中,而Flask将配置信息保存到了
- 读取:
- app.config.get(“name”)
- app.config[name]
- 设置参数的三种主要方式:
- 从配置对象中加载
app.config.from_object(配置对象)
- 从配置文件中加载
app.config.from_pyfile(配置文件)
- 从环境变量中加载
app.config.from_envvar(环境变量名)
- 从配置对象中加载
- 从配置对象中加载
代码示例:
from flask import Flask
class DefaultConfig(object):
"""默认配置"""
SECRET_KEY = "HNhidiwi3442ojnko"
app = Flask(__name__)
app.config.from_object(DefaultConfig)
@app.route("/")
def index():
print(app.config["SECRET_KEY"])
return app.config["SECRET_KEY"]
if __name__ == '__main__':
app.run()
- 从配置文件中加载
示例代码:
新建一个配置文件setting.py
SECRET_KEY = "123fefeifidwhhdho;"
from flask import Flask
app = Flask(__name__)
app.config.from_pyfile("settings.py")
@app.route("/")
def index():
print(app.config["SECRET_KEY"])
return app.config["SECRET_KEY"]
if __name__ == '__main__':
app.run()
- 从环境变量中加载
在linux系统中设置和读取环境变量的方式如下:
export 变量名=变量值 # 设置
echo $变量名 # 读取
flask使用环境变量加载配置的本质是通过环境变量值找到配置文件,再读取配置文件的信息。
环境变量的值为配置文件的绝对路径
代码示例:
在终端中执行如下命令,定义环境变量
export PROJECT_SETTING = "~/setting.py"
from flask import Flask
app = Flask(__name__)
app.config.from_envvar("PROJECT_SETTING", silent=True)
@app.route("/")
def index():
print(app.config["SECRET_KEY"])
return app.config["SECRET_KEY"]
if __name__ == '__main__':
app.run()
关于silent的说明:
表示系统环境变量中没有设置相应值时是否抛出异常
- False 表示不安静的处理,没有值时报错通知,默认为False
- True 表示安静的处理,即使没有值也让False正常的运行下去
3.3 app.run()运行参数
可以指定运行的主机ip地址,端口,是否开启调试模式
app.run(host='0.0.0.0', post='5000', debug=True)
关于DEBUG调试模式:
- 程序代码修改后可以自动重启服务器
- 在服务器出现相关错误的时候可以直接将错误信息返回到前端进行展示
4、开发服务器运行方式
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。