一丶介绍
Flask的核心在于Werkzeug(路由模块),Jinja2模块引擎
类比Django:路由、模板、ORM
Flask要完成功能,依赖于丰富的插件(扩展模块)
Flask与Django的区别
Flask:
- Flask是轻量级框架
- Flask自由、灵活,第三库的选择面广,可以使用强大的Python三方库
- 入门简单,即便没有多少web开发经验,也能很快做出网站
- 非常适用于小型网站
- 非常适用于开发web服务的API
Django:
- Django适合企业级网站开发
- 自带的ORM很非常优秀
- 上手容易,开发文档详细、完善、相关资料丰富
- 成熟、稳定、完善,但相比于Flask,Django的整体生态相对封闭
二、环境搭建
virtualenvwrapper来创建、管理我们的虚拟环境
实际开发中,每一个项目都有对应的虚拟环境
为什么要安装虚拟环境?
虚拟环境可以让系统Python环境保持干净,纯洁,避免包的混乱和版本的冲突。专为不同的项目搭建不同的环境,为每个项目使用虚拟环境可以保证项目只访问虚拟环境中的包,从而保持全局解释器的干净整洁,使其只作为创建虚拟环境的源。
- 安装虚拟环境:pip install virtualenvwrapper -win
- 配置虚拟环境主目录:在Windows上环境变量中添加环境变量WORKON_HOME
- 虚拟环境操作:
- 创建虚拟环境 mkvirtualenv 虚拟环境名
- 查看所有虚拟环境 workon
- 切换进入虚拟环境 workon 虚拟环境名
- 查看命令是否在虚拟环境中,要看命令行的前缀是否有括号
- 离开虚拟环境 dective
- 安装flask:pip install flask==1.0.2
三、项目配置
1、Flask配置理解
app.config是一个类字典的对象,里面已经有了很多默认的配置。我们可以向里面添加自己新的配置。
在app.py中添加配置信息并打印
from flask import Flask
app = Flask(__name__)
# 配置信息
print(app.config)
app.config['room'] = "105"
app.config['MYSQL_HOST'] = "127.0.0.1"
# 获取配置信息
print(app.config['room'])
print(app.config['MYSQL_HOST'])
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run(host="127.0.0.1",port=8888,debug=True)
2、配置对象加载
我们把配置信息写入到一个类中,然后去加载
配置类:我们写入到settings模块
# 定义一个配置类
class Config:
ROOM = "105"
MYSQL_HOST = "127.0.0.1"
返回到app.py中修改
from flask import Flask
from settings import Config
app = Flask(__name__)
app.config.from_object(Config)
# 配置信息
print(app.config)
# app.config['room'] = "105"
# app.config["MYSQL_HOST"] = "127.0.0.1"
# 获取配置信息
# print(app.config['room'])
# print(app.config["MYSQL_HOST"])
print(app.config.get("ROOM"))
print(app.config.get("MYSQL_HOST"))
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run(host="127.0.0.1",port=8888,debug=True)
3、配置文件加载
我们直接把配置信息写入文件,然后去加载
# 定义一个配置类
ROOM = "3308"
MYSQL_HOST = "192.168.0.49"
4、环境变量中加载
在pycharm中定义一个环境变量,这个环境变量指向一个目录下的文件
定义test.txt文件
内容为:
ROOM = "999"
MYSQL_HOST = "99.88.89.11"
在pycharm中定义一个环境变量指向test.txt
在Flask中使用这个环境变量
app = Flask(__name__)
# app.config.from_object(Config)
# app.config.from_pyfile("settings.py")
app.config.from_envvar("test")
print(app.config.get("ROOM"))
print(app.config.get("MYSQL_HOST"))