Table of Contents
Flask安装配置
02认识flask
框架:能被服务器调用,根据客户端请求处理形成返回数据

轻量级框架:代表除了框架核心功能,没有提供丰富的工具组件,组件之间很少相互耦合,自由定制,功能扩展时更方便
Flask基于werkzeug工具箱(支撑WSGI协议)形成框架,模板的功能是由jinja2来的
Django使用命令新建工程,连目录层级都是他搭建好的,manage.py管理工程、数据库迁移,有缓存机制、文件存储系统、用户认证-->快速开发
Flask使用扩展包-->要做什么那是你的自由
常用扩展包:
Flask-SQLalchemy:数据库操作
Flask-migrate:迁移数据库
Flask-Mail邮件
Flask-WTF表单
Flask-Login:认证用户状态
Flask-restful:开发API
Flask-bootstrap:前端twitter Bootstrap框架
03虚拟环境
虚拟环境安装,避免包混乱,版本冲突,保证程序只能访问虚拟环境中的包,不会影响全局python解释器
Virtualenv虚拟环境原理:
虚拟环境是互相隔离的目录,能看到的变化只是当前目录前面多了个(flask)
在虚拟环境中pip安装不能sudo,否则变成系统环境,无法隔离
其实目录下多了. virtualenv隐藏目录,其中放了所有新建虚拟环境时安装的:
1). virtualenv/flask_py2/bin目录,其中存放了python解释所需的python2.7文件等
2). virtualenv/flask_py2/lib/python2.7/site-packages/下存放了flask等用pip安装的工具包。
查看是否安装virtualenv:
>>> virtualenv --version |
我没有安装这个,同时用习惯了anaconda的虚拟环境,就直接在之前用过的flask虚拟环境做了,此处使用的py2,课程使用的flask==0.10.1,我使用的flask==1.1.1
activate py2_flask |
查看当前虚拟环境安装过哪些工具包(好使)
pip list |
或(更好使)
pip freeze |
将工具包输出到requirements文件,使用>重定向
(py2_flask) D:\>cd D:\anacondaProject (py2_flask) D:\anacondaProject>pip freeze > requirements.txt |
在新环境中安装时使用:-r可将它逐行读取安装
pip install -r requirements.txt |
App对象的初始化和配置
01 app初始化参数说明
from flask import Flask app = Flask(__name__) |
__name__表示当前模块的名字,flask以这个模块所在的目录为总目录,默认这个目录中的static为静态目录,templates为模板目录
print(__name__) |
直接在该文件打印结果: __main__ |
一般模块的名字是文件名,但是作为启动模块的名字却是固定的
import demo |
作为模块导入打印结果: demo |
使用__name__等同于
app = Flask("__main__") |
在static建立静态文件index.html或jpg尝试访问
activate py2_flask cd /d D:\anacondaProject\where2go\webapp python app.py |
http://localhost/static/img/bg.jpg |
初始化参数:Flask()中传的
import_name:__name__
static_url_path:访问静态资源对应url
static_folder:静态文件存放目录,默认static
template_folder:模板文件存放目录,默认templates
app = Flask(__name__, static_url_path="/python", static_folder="static", template_folder="templates") |
http://localhost/python/img/bg.jpg |
03 flask的配置参数设置
法一:创建config.cfg文件
DEBUG=TURE |
使用config文件:
app.config.from_pyfile("config.cfg") |
法二:使用对象配置参数
class Config(object): DEBUG = True app.config.from_object(Config) |
法三:修改config字典
app.config["DEBUG"]=True |
04 读取配置参数
配置文件添加参数:
class Config(object): DEBUG = True ITCAST="python" app.config.from_object(Config) |
在视图函数中要读取参数值:
如果函数在app中,可以得到全局对象,app.config可以当作字典取值
@app.route('/') def welcome(): app.config.get("ITCAST") |
在其他文件中视图不能直接得到app对象,使用app的全局代理
from flask import current_app |
current_app.config.get("ITCAST") |
05 app.run的使用
app.run(host= '0.0.0.0', port=80, debug=True) |