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'] = value4.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