Flask扩展包:
Flask-SQLalchemy:操作数据库;
Flask-migrate:管理迁移数据库;
Flask-Mail:邮件;
Flask-WTF:表单;
Flask-script:插入脚本;
Flask-Login:认证用户状态;
Flask-RESTful:开发REST API的工具;
Flask-Bootstrap:集成前端Twitter Bootstrap框架;
Flask-Moment:本地化日期和时间;
1、创建虚拟环境
虚拟环境是一个互相隔离的目录
1.mkvirtualenv flask_py2 #创建虚拟环境
2.pip install flask==0.10.1 #安装flask
pip freeze > requirements.txt #在虚拟环境venv/Lib/site-pakages导出原有的需要的环境依赖模块
pip install –r requirements.txt#在未安装flask依赖包的虚拟环境venv/Lib/site-pakages下逐个安装依赖包
2、flask 基础范例
# coding:utf-8
# 导入Flask类
from flask import Flask
#Flask类接收一个参数__name__
app = Flask(__name__)
# 装饰器的作用是将路由映射到视图函数index
@app.route('/')
def index():
return 'Hello World'
# Flask应用程序实例的run方法启动WEB服务器
if __name__ == '__main__':
app.run()
3、初始化参数
import_name:
static_url_path:
static_folder: 默认‘static’
template_folder: 默认‘templates’
4.1.2 配置参数
配置类范例:
class Config(object):
# 连接数据库
# SQLALCHEMY_DATABASE_URI = 'mysql://root:12345@127.0.0.1:3306/fk' # 12345是数据库密码
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'fk.sqlite')
# 12345是数据库密码
# 设置sqlalchemy同步自动更新
SQLALCHEMY_TRACK_MODIFICATIONS = True
SECRET_KEY='DJSK'
# 导入配置
app.config.from_object(Config)
app.config.from_pyfile(“yourconfig.cfg”)#配置文件yourconfig.cfg导入
app.config.from_object(Config)#配置类Config导入
app.config['key'] = value
4.1.3 在视图读取配置参数
app.config.get() 或者 current_app.config.get()
4.1.4 app.run的参数
app.run(host=”0.0.0.0”, port=5000)#还有许多其他参数
路由
4.2.1 app.url_map 查看所有路由
4.2.2 利用methods限制访问方式
@app.route(’/sample’, methods=[‘GET’, ‘POST’])
4.2.3 同一路由装饰多个视图函数
4.2.4 同一视图多个路由装饰器
4.2.5 使用url_for进行反解析
4.2.5 动态路由
获取路由中传递的参数,路由传递的参数默认当做string处理
整型:
Path 类型
4.3 获取请求参数
from flask import request
就是 Flask 中表示当前请求的 request 对象,request对象中保存了一次HTTP请求的一切信息。
args get请求时,记录请求中的所有的参数,返回一个类字典格式数据类型。
form post 请求时, 记录请求中的所有的参数,返回一个类字典格式数据类型。
4.3.1 上传文件
已上传的文件存储在内存或是文件系统中一个临时的位置。你可以通过请求对象的 files 属性访问它们。每个上传的文件都会存储在这个字典里。它表现近乎为一个标准的 Python file 对象,但它还有一个 save() 方法,这个方法允许你把文件保存到服务器的文件系统上。这里是一个用它保存文件的例子:
from flask import request
@app.route('/upload', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
f = request.files['the_file']
f.save('static/1.jpg')
...
如果你想知道上传前文件在客户端的文件名是什么,你可以访问 filename 属性。
@app.route('/upload', methods=['GET', 'POST'])
def upload():
if request.method == 'POST':
file_obj = request.files.get('pic') # 返回一个file对象
# 获取文件名称
name = file_obj.filename
print(name)
file_obj.save('static/{}'.format(name))
return '上传成功'
return render_template('upload.html')
if __name__ == '__main__':
app.run(debug=True)
4.4 abort函数与自定义异常处理
4.4.1 abort函数
如果在视图函数执行过程中,出现了异常错误,我们可以使用abort函数立即终止视图函数的执行。通过abort函数,可以向前端返回一个http标准中存在的错误状态码,表示出现的错误信息。
使用abort抛出一个http标准中不存在的自定义的状态码,没有实际意义。如果abort函数被触发,其后面的语句将不会执行。其类似于python中raise。
from flask import abort
也可以向页面返回信息
4.4.2 自定义异常处理
@app.errorhandler(404)
def error(e):
return '您请求的页面不存在了,请确认后再次访问!%s'%e