Flask学习笔记(1)
Flask是基于Werkzeug工具箱编写的轻量级Web开发框架。
安装flask
pip install flask
入门
第一个程序
编写app.py
from flask import Flask
app = Flask(__name__) # 传入__name__参数,决定了Flask在访问静态文件时查找的路径
# static_url_path 静态文件访问路径,可以不传,默认为:/+static_folder
# static_folder 静态文件存储的文件夹,可以不传,默认为:static
# app = Flask(__name__, static_url_path='/s', static_folder='static_files')
# 定义视图
@app.route('/')
def index():
return 'hello world'
if __name__ == '__main__':
app.run()
启动项目后访问:http://127.0.0.1:5000
初始化参数
在上述程序中,首先我们从 flask
包导入 Flask
类,通过实例化这个类,创建一个程序对象 app
:
from flask import Flask
app = Flask(__name__)
其中传入的__name__
参数,决定了Flask在访问静态文件时查找的路径。
我们可以传入其他的参数,修改默认查找的静态文件名称:
from flask import Flask
app = Flask(__name__, static_url_path='/s', static_folder='static_files')
上述两个参数的作用:
static_url_path: 静态文件访问路径,可以不传,默认为:/+static_folder
static_folder: 静态文件存储的文件夹,可以不传,默认为:static
应用程序配置参数
比如:需要配置数据库的连接信息,日志的配置信息,自定义的配置信息...等等。
Flask将配置信息保存到了 app.config
属性中,可以通过 app.config.get(name)
和 app.config[name]
的方式进行读取。
主要有以下三种加载配置参数的方式:
-
从配置对象中加载
class DefaultConfig(object): """ 默认配置 """ SECRET_KEY = 'cah2q3l4df8ap5i5t6n7r8nv0mb' app.config.from_object(DefaultConfig)
-
从配置文件中加载
app.config.from_pyfile('setting.py')
-
从环境变量中加载
app.config.from_envvar('PROJECT_SETTING')
注意:可以指定silent参数,表示系统环境中没有设置相应值时是否抛出异常,默认False
app.config.from_envvar('PROJECT_SETTING', silent=False)
app.run
参数
可以指定运行的主机IP地址,端口,是否开启调试模式
app.run(host='0.0.0.0', port=8080, debug=True)
Flask启动方式
除了可以在代码中使用 app.run()
的方式启动之外,还可以使用命令的方式启动。
终端启动
export FLASK_APP=app.py
flask run
可以指定端口号:
flask run -h 0.0.0.0 -p 8000
设置开发还是生产模式:
通过 FLASK_ENV
环境变量指定
export FLASK_ENV=production # 生产模式
export FLASK_ENV=development # 开发模式
注意:windows中使用 set
或者 $env:
替代 export
Flask常用的第三方扩展包
-
Flask-SQLAlchemy: 操作数据库,ORM
-
Flask-script: 终端脚本工具,脚手架
-
Flask-migrate: 管理迁移数据库
-
Flask-Session: 指定Session存储方式
-
Flask-WTF: 表单
-
Flask-Mail: 邮件
-
Flask-Babel: 提供国际化和本地化的支持
-
Flask-Login: 认证用户状态
-
Flask-OpenID: 认证,OAuth
-
Flask-RESTful: 开发REST API的工具
-
Flask JSON-RPC: 开发rpc远程服务调用
-
Flask-Bootstrap: 集成前端Bootstrap框架
-
Flask-Moment: 本地化日期和时间
-
Flask-Admin: 可扩展的管理接口的框架