1.什么是flask框架?
Flask是使用Python实现的一种web框架。其显著特征是:它是一个‘微’框架,‘微’意味着旨在保持核心的简单,但同时又易于扩展。默认情况下,Flask不包含数据库抽象层、表单验证,或者是其它任何已有多种库可以胜任的功能。然而,Flask支持用扩展来给应用添加这些功能。众多的扩展提供了数据库集成、表单验证、上传上传处理、各种各样的开放认证技术等功能。Flask的这些特征,使得它在web开放方面变得非常流行。
前面我们有学到django框架,那么这两种框架有哪些区别呢?
django—> 完善完整高集成的框架
flask—–>不包含数据库抽象层的微框架,database和templates需要自己去装。
2.Flash环境搭建
(1)进入window命令行:
创建虚拟环境virtualenv --no-site-packages flaskenv
cd flaskenv
cd Script
(2)启动虚拟环境:
activate
(3)安装flask:(可以安装在虚拟环境外面或者里面)
pip install flask
(4)打开pycharm,新建flask框架的工程:(这点和django不一样噢!)
新建工程后,会默认生产一个输出hello world的程序
(5)运行flask
python app.py ———–>启动默认127.0.0.1:5000
(6)配置相应的运行参数
(7) 安装Flask-Script
Flask-Script 是一个 Flask 扩展, 为 Flask 程序添加了一个命令行解析器。
pip install flask-script
Flask-Script使用方法:
from flask-script import Manager
manager = Manager(app)
if __name == '__main__':
manager.run()
(8)启动服务
python app.py runserver -h 127.0.0.1 -p 5000 -d
默认只能本地访问网站,如果需要其他人也可以访问,需要指定0.0.0.0这个ip。-d表示启动debug模式。
3.安装蓝图flask-blueprint
一个大型项目一般由许多的模块组成,为了实现每个模块的功能的独立开发与管理,我们可以采用Flask Blueprint来实现。Flask Blueprint主要有如下功能:
1. 可以独立管理网页的静态文件,如js,css,图片等,既可以指定单纯的静态路径,也可以指定模板的路径。
2. 方便项目中的模块整合。
Flask Blueprint安装方式如下:
pip install flask-blueprint
初始化:
blue = Blueprint('first', __name__)
路由注册:
app.register_blueprint(blueprint=blue, url_prefix='/hello')
#url_prefix表示蓝图前缀
4.manage.py 和 view.py
创建flask项目后,pycharm自动生成的的代码全部在一个.py文件中,当项目规模表较大时,代码数量增加,会变得不易管理。此时我们可以在项目文件下创建一个manag.py文件用来存放运行文件。在app文件下创建一个view.py文件用来保存我们的主要功能实现代码。
其中manage.py中存储的代码如下:
from flask import Flask #从flask中导入flask包
from flask_script import Manager
from App import create_app
#初始化,__name__代表主模块名或者包
app = create_app()
manager = Manager(app=app)
if __name__ == '__main__':
#启动项目
manager.run()
view.py中代码如下:
from flask import Blueprint
#蓝图初始化
blue = Blueprint('first', __name__)
# 路由(127.0.0.1::5000)
@blue.route('/', methods=['GET', 'POST'])
def hello_world():
# 视图函数
return 'Hello World!'
5.路由规则
django中:
\(\d+)\ #\d是匹配数字字符[0-9],+匹配一个或多个
\<?P(\d+)>\ #?P定义一个命名组
Flask中
<converter:name>
string: 默认的字符串,可以省略
int: 整形
float:浮点型
path:'/'也是当做字符串返回
uuid:uuid类型
Flask中路由实例:
@blue.route('/getfloat/<float:price>/')
def hello_float(price):
return 'float:%s' % price
@blue.route('/ggg/<string:name>/')
def hello_name(name):
6.request请求
(1)args和values
get请求,返回请求中的参数,values返回请求中的参数和form
return json.dumps(request.args)
return str(request.value)
(2) form
返回form的内容
return json.dumps(request.form)
(3) files
请求上传的file文件
(4)method
获取请求方式
return request.method
(5)url、path、script_root、base_url、url_root:看结果比较直观
return 'url: %s , script_root: %s , path: %s , base_url: %s , url_root : %s' % (request.url,request.script_root, request.path,request.base_url,request.url_root)
(6)cookies:cookies信息
return json.dumps(request.cookies)
7.安装flask-session和redis
flask-session是flash框架的session组件,由于原来的flask内置session使用签名cookie保存,该组件则支持session保存到多个地方,如:
redis:保存数据的一种工具
memcashed
filesystem
mongodb
sqlachey
安装方式:
pip install flask-session
pip install redis