一.什么是flask
1.flask的介绍:
Flask诞生于2010年, 使用python语言基于Werkzeug工具箱编写的轻量级Web开发框架
Flask本身相当于一个内核, 其他几乎所有的功能都要用到扩展(邮件:Flask-Mail, 用户认证:Flask-Login, 数据库:Flask-SQLAlchemy).
Flask的核心在于Werkzeug(路由模块), Jinja2模板引擎.
2.flask的特点:
1自由、灵活、可扩展性强,第三方库的选择面广,开发时可以结合自己喜欢用的轮子,也能结合最流行的最强大的Python库;
2入门简单,即便没有多少web开发经验,也能很快做出网站;
3非常适用于小型网站;
4非常适用于开发web服务的API;
5开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验
二.flask框架环境搭建
1.虚拟环境安装:
# 安装虚拟环境管理包: virtualenvwrapper
pip install virtualenvwrapper
# 虚拟环境命令
创建虚拟环境: mkvirtualenv envname
激活虚拟环境: workon envname
查看虚拟环境: lsvirtualenv
移除虚拟环境: rmvirtualenv envname
退出虚拟环境: deactivate
# 环境依赖技巧
生成依赖清单: pip freeze > requirements.txt
自动安装依赖: pip install -r requirements.txt
1.2 Flask框架的安装
pip install flask==1.0.2
注意:
flask的核心是Werkzeug和Jinja2, 所以在安装Flask的同时, 会自动安装上面的两个依赖
2.Flask配置
# Flask项目配置文件加载方式: 1.从配置对象中加载 2.从配置文件中加载 3.从环境变量中加载
2.1从配置对象中加载
# 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'
3.从配置文件加载
# 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()
4.环境变量中加载
我们在pycharm中定义一个环境变量,这个环境变量指向一个目录下的文件
我在桌面上创建一个a.txt文件 写入如下内容:
ROOM="999"
MYSQL_HOST="99.88.89.11"
在pycharm中定义一个环境变量 aaa 指向 a.txt文件
在flask中使用 这个环境变量aaa
代码:
app = Flask(__name__)
# app.config.from_object(Config)
# app.config.from_pyfile("settings.py")
app.config.from_envvar("aaa")
print(app.config.get("ROOM"))
print(app.config.get("MYSQL_HOST"))