官方文档: http://flask.pocoo.org/docs/0.11/
中文文档: http://docs.jinkan.org/docs/flask/
HTTP协议:
请求
- 请求行
- 请求头
- 请求体
响应
响应行
HTTP / 1.1 200 OK
响应状态:
- 200:响应成功
- 302:重定向
- 304:资源未更新
- 404:资源不存在
- 500:服务器内部错误
- 键值对:说明
Content-Type:文件类型 text/html image/jpeg application/json text/xml
- 响应体
1.定义正则:
1.导包
from werkzeug.routing import BaseConverter
2.创建正则类,重写__init__
方法,并调用父类方法
class XXXX(BaseConverter):
def __init__(self, url_map, *args): super(XXXX,self).__init__(url_map)
self.regex = args[0]
3.添加至app
# 创建Flask对象
app = Flask(__name__)
app.url_map.converters['re'] = XXXX
# 视图入口
if __name__ == "__main__":
app.run(debug=True) # 调试模式
2.传参
- 在@app.route(‘/<>’)路由中添加可变参数:
<id>
- 规定参数类型:
<int:id>
- 引用正则:
<re('[a-z]'):id>
3.返回JSON数据
- 导入json数据包
- 调用返回:
json.jumps(json-data)
4.状态码
def ret():
return 'data', 200
# 抛出异常,404代表异常类型
def abort_test();
abort(404)
return 'data' # 可以返回字符串,Flask自动封装为响应对象
自定义状态码视图
@app.errorhandler(500) # 注册状态码处理函数
def error_test(value):
return '服务器忙...'
5.上下文对象(request.response)
request
sesion
current_app
g
(response)
Flask 封装request和response为全局对象
request方法:
方法 | 解释 |
---|---|
args | 一个包含解析过的查询字符串( URL 中问号后的部分)内容的 MultiDict |
form | 一个包含解析过的从 POST 或 PUT 请求发送的表单对象的 MultiDict 。请注意上传的文件不会在这里,而是在 files 属性中 |
value | 一个包含 form 和 args 全部内容的 CombinedMultiDict |
cookies | 一个包含请求中传送的所有 cookie 内容的 dict |
headers | 进入请求的标头存为一个类似字典的对象 |
files | 一个包含 POST 和 PUT 请求中上传的文件的 MultiDict. 包含save()方法 |
method | 当前请求的 HTTP 方法 |
如下参考完整url信息 | http://www.example.com/myapplication/page.html?x=y |
path | /page.html |
script_root | /myapplication |
base_url | http://www.example.com/myapplication/page.html |
url | http://www.example.com/myapplication/page.html?x=y |
url_root | http://www.example.com/myapplication/ |
response方法:
方法 | 解释 |
---|---|
headers | Headers 对象用于设置响应的头信息 |
status | 用于设置响应状态描述 |
status_code | 整数,用于设置响应状态码 |
mimetype | 用于设置响应的MIME类型 |
set_cookie() | 设置cookie |
示例:
response = make_response('显示文字') # 创建response对象
response.set_cookie(key, value) # 设置cookie
request.headers.get('User-Agent') # 获取请求头中内容
session['key'] = value # 设置session
session.<