1.1Flask介绍
Flask诞生于2010年, 使用python语言基于Werkzeug工具箱编写的轻量级Web开发框架
Flask本身相当于一个内核, 其他几乎所有的功能都要用到扩展(邮件:Flask-Mail, 用户认证:Flask-Login, 数据库:Flask-SQLAlchemy).
Flask的核心在于Werkzeug(路由模块), Jinja2模板引擎.
# Flask的"轻" Flask的"轻", 不代表其功能不够强大, Flask拥有丰富的扩展, 其依赖于扩展来给应用添加功能, 众多的插件提供了数据库集成, 表单验证, 上传处理,各种各样的开放认证技术等, Flask的这些特性使得它在web开发方面变得非常流行 # 注意: 如果构建大型项目, 使用很多扩展, Flask也会变的跟Django一样的重.
1.2.Flask框架环境搭建
# 安装虚拟环境管理包: virtualenvwrapper pip install virtualenvwrapper # 虚拟环境命令 创建虚拟环境: mkvirtualenv envname 激活虚拟环境: workon envname 查看虚拟环境: lsvirtualenv 移除虚拟环境: rmvirtualenv envname 退出虚拟环境: deactivate # 环境依赖技巧 生成依赖清单: pip freeze > requirements.txt 自动安装依赖: pip install -r requirements.txt
# Flask框架的安装 pip install flask==1.0.2 # 注意: flask的核心是Werkzeug和Jinja2, 所以在安装Flask的同时, 会自动安装上面的两个依赖.
flask核心在于werkzeug(路由模块),jinja2模拟引擎
类比django,路由,模板,ORM
flask 要完成功能,依赖于丰富的插件(扩展模块)
常见问题:
django与flask 有什么区别
2.配置虚拟环境主目录在windows上环境变量中添加环境变量 WORKON_HOME
配置上目录 D:virtual_envs
3.虚拟环境操作3.1 虚拟环境命令
# 虚拟环境命令 创建虚拟环境: mkvirtualenv envname 激活虚拟环境: workon envname 查看虚拟环境: lsvirtualenv 移除虚拟环境: rmvirtualenv envname 退出虚拟环境: deactivate4.安装flask
pip install flask==1.0.25.pip 高级使用导出环境中所有的包
pip freeze > requirements.txt 自动安装依赖: pip install -r requirements.txt
flask项目配置 1.flask配置理解app.config是一个类字典的对象,里面已经有了很多默认的配置,我们可以向里面添加自己新的配置
向配置里添加配置
配置信息 print(app.config) app.config['room'] = '407'
从配置中获取配置变量对应的值
获取配置中的信息 print(app.config.get(room))
2.配置对象加载
我们把配置信息,写入到一个类中,然后去加载
从配置对象中加载
# 1.从配置对象中加载
# (1).实现步骤:
- 创建配置类(建议单独文件中创建)
- 加载配置对象
- 使用配置
# (2).示例:
1).settings.py代码:
class DefaultConfig(object):
MYSQL_HOST = '127.0.0.1'
MYSQL_PORT = 3306
2).Flask实例文件代码:
from flask import Flask
# 导入配置类
from settings import DefaultConfig
app = Flask(__name__)
# 从配置对象中加载配置
app.config.from_object(DefaultConfig)
@app.route('/')
def index():
# get方式调用配置
mysql_port = app.config.get('MYSQL_PORT')
print(mysql_port)
# 字典键值方式调用配置
mysql_host = app.config['MYSQL_HOST']
print(mysql_host)
return 'load config from object'
2.1从配置对象加载
配置类:
配置类,写入到setting模块中(setting.py)
定义一个配置类
属性必须全是大写
class Config:
配置属性=值
ROOM = "407"
MYSQL_HOST = "127.0.0.1"
2.2从配置文件加载
# 2.从配置文件加载
# (1).实现步骤:
- 创建配置文件(py文件或其他格式文件均可)
- 加载配置文件
- 使用配置
# (2).示例:
1).创建配置文件settings.py, 并编写配置信息:
MYSQL_HOST = '127.0.0.1'
MYSQL_PORT = 3306
2).Flask实例代码:
from flask import Flask
app = Flask(__name__)
# 从文件加载配置
app.config.from_pyfile('settings.py')
@app.route('/')
def index():
# 获取配置信息
mysql_port = app.config.get('MYSQL_PORT')
print(mysql_port)
mysql_host = app.config['MYSQL_HOST']
print(mysql_host)
return 'Hello Flask'
if __name__ == '__main__':
app.run()
2.3从环境变量中加载
3.从环境变量中加载 (1).实现步骤:- 创建配置文件(存放敏感信息, 不与项目同目录) - 添加配置文件环境变量 - 获取配置(2).添加配置文件环境变量
1).创建配置文件, 并拷贝配置文件路径: 步骤略
2).加载配置文件:
app.config.from_envvar('settings')
注意: 如果配置文件加载不到则会抛出异常, 禁止抛出异常可以添加silent参数为TRUE, 即app.config.from_envvar('settings', silent=True)
3).设置配置文件的环境变量, 如下图:
4).获取配置与上面两种方式一致
三种配置方式对比: 1.从对象加载配置: 配置方式灵活, 可复用性强, 但不安全 2.从文件加载配置: 复用性不好, 也不安全, 但是官方推荐用法 3.从环境变量加载: 相对安全, 利于配置敏感信息, 推荐使用
3.2.Flask路由定义
# 路由定义 Flask的路由为装饰器实现的, 语法及参数如下: @app.route(url, method=[....], endpoint="...") def index(): pass # 参数: - URL: 路由路径 - method: 视图允许的请求方法, 如不指定method, 则默认只允许GET请求访问视图 - endpoint: 端点, 可以视为路由别名, 如果endpoint不指定, 则默认endpoint的值为视图函数名



