flask
Flask是一个基于Python实现的web开发的'微'框架我
1.virtualenv flaskenv
2.scripts/activate
-
pip install flask
hello.pyfrom flask import Flask # 初始化flask对象 app = Flask(__name__) # 定义路由,绑定视图函数 @app.route('/') def hello(): return 'Hello World' # 启动项目 if __name__ == '__main__': # port:端口, host:IP地址。 debug:调试模式 app.run(port=8080, host='0.0.0.0', debug=True)
运行默认IP:端口 ----> 127.0.0.1:500
初始化
from flask import Flask
app = Flask(name)
Flask类构造函数唯一需要的参数就是应用程序的主模块或包。对于大多数应用程序,Python的name变量就是那个正确的、你需要传递的值。Flask使用这个参数来确定应用程序的根目录,这样以后可以相对这个路径来找到资源文件。
路由
@app.route(' / ')
客户端例如web浏览器发送 请求 给web服务,进而将它们发送给Flask应用程序实例。应用程序实例需要知道对于各个URL请求需要运行哪些代码,所以它给Python函数建立了一个URLs映射。这些在URL和函数之间建立联系的操作被称之为 路由 。
在Flask应程序中定义路由的最便捷的方式是通过显示定义在应用程序实例之上的app.route装饰器,注册被装饰的函数来作为一个 路由。
安装插件-使用Manager
pip install flask-script
from flask_script import Manager
使用manage管理flask的对象
启动命令:python 文件名 runserver -d -p -h
d>debug >:port h> host
manage = Managger(app=app)
启动项目
if _ _name_ _ == '_ _main_ _':
manage.run()
使用蓝图
安装
pip install flask_blueprint
from flask import Blueprint
实例化蓝图应用
一,blue = Blueprint('app', _ name _)
注意:Blueprint中传入了两个参数,第一个是蓝图的名称,第二个是蓝图所在的包或模块,name代表当前模块名或者包名
装饰视图函数
@blue.route(' / ', methods = ['GET', 'POST'])
def hello()
return 'Hello World'
二、注册
app.register_blueprint(blueprint=blue, url_prefix='/app')
url_for反向解析
url_for('蓝图的第一个采纳数.跳转到某个函数的函数名')
from flask import url_for, redirect
@blue.route('/redirect/')
def make_redirect()
return redirdct('/hello/index/')
或者
return
redirect(url_for('first.index))
route匹配规则
1.<string: xxx> 获取到的xxx的参数为字符串类型
2.<xxx> 默认获取到的xxx参数的值为字符串类型
3.<int:xxx> 获取到的xxx参数的值为整型类型
4.<float:xxx> 获取到xxx参数的值为浮点型
5.<uuid:uuid>
route(self, rule, option)
请求与响应
请求:是客户端传到服务端的
响应:是服务端返回到客户端的,比如设置响应值
请求
如果是GET请求:获取get请求中的参数,使用request.args
如果是POST/PUT/PATCH/DELETE请求: 获取post请求中的参数,使用request.form
获取key重复的value值,使用request.form.getlist(key)
args是get请求参数的包装,args是一个ImmutableMultiDict对象,类字典结构对象
form是post请求参数的包装,args是一个ImmutableMultiDict对象,类字典结构对象
响应response
from flask import make_response
make_response(data, code) 创建response对象
绑定cookie
set_cookie(key, value, max_age/expires)
delete_cookie(key)
抛出与异常
抛出:abort(500)
捕获:blue.errorhandler(500)