request
在flask中,request对象是一个全局的,在任何地方都可以使用。
GET POST请求
action:表示要提交到的地址
method:请求方式
args 用来get参数
form 用来post参数
values get和post都可以取
getlist 取一键多值类型的参数
上传文件
上传文件用file 记住千万要校验文件是否安全,永远不要相信用户的输入
文件这种类型属于多媒体类型资源。前端form表单里面需要加
enctype="multipart/form-data"
允许上传文件的类型
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
判断上传的文件是否是允许的后缀
def allowed_file(filename): return "." in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
filename = secure_filename(file.filename)
# 用这个函数确定文件名称是否是安全 (注意:中文不能识别)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
# 保存文件
# send_from_directory可以从目录加载文件
return send_from_directory(app.config['UPLOAD_FOLDER'],
response
视图在接收HttpRequest并处理后,必须返回HttpResponse对象。目前视图函数只是返回字符串,之后 Flask 将字符串转换为响应对象。如果你要显式地转换,你可以使用make_response()函数然后再进行修改。
make_response
resp = make_response(render_template('cookie.html'))
# 显式转换成HttpResponse对象
cookie
如果想使用flask的cookie得先通过make_response创建response对象
cookie是网站以键值对格式存储在浏览器中的一段纯文本信息,用于实现用户跟踪。cookie是基于域安全的
使用set_cookie方法来设置cookie
使用request来获取cookie
age = request.cookies.get('age')
使用delete_cookie方法删除cookie
res = make_response('删除cookie')
res.delete_cookie('nickname')
# 删除的cookie的本质就是改变cookie的过期时间
过期时间
max_age是一个整数,表示在指定秒数后过期。
expires是一个datetime或timedelta对象,会话将在这个指定的日期/时间过期。
max_age与expires二选一。
如果不指定过期时间,在关闭浏览器时cookie会过期。
自定义响应
如果我们要自定义响应信息,必须返回的是元组,并且是(response,status,headers)这样的数据结构,至少要有response。
status指定的是HTTP状态码,可以是HTTP中状态码,也可以是自定义的状态码。headers指的是额外的响应头。
用make_response 也可以自定义响应
return (‘自定义响应信息’, 502, {“name”: “xiaosong”, “age”: 12})
可以不加括号,会自动组装成元组 # return ‘自定义响应信息’, 502, {“name”: “xiaosong”, “age”: 12}
自定义状态码 可以加上描述信息 # return ‘自定义响应信息’, ‘520 love error’, {“name”: “xiaosong”, “age”: 12}
make_response 方法
resp = make_response()
resp.headers['name'] = 'xiaosong'
resp.status = '520 love error'
return resp
jsonify
在Django中有个JsonResponse可以返回Json,在Flask中我们用jsonify返回Json。
json是一种数据交互格式
json——>dict 使用loads
dict——>json 使用dumps
序列化:把对象转换成可传输或者可储存的过程叫序列化
反序列化:把传输的数据或储存的数据转化成对象叫反序列化