一、request对象属性

data记录请求的数据,并转换为字符串*
form记录请求中的表单数据MultiDict
args记录请求中的查询参数MultiDict
cookies记录请求中的cookie信息Dict
headers记录请求中的报文头EnvironHeaders
method记录请求使用的HTTP方法GET/POST
url记录请求的URL地址string
files记录请求上传的文件*

二、form、data、args使用

@app.route("/login", methods=["GET", "POST"])
def login():
print(request.data)
# 获取表单提交的数据用request.form
name = request.form.get("name")
password = request.form.get("password")
# 获取相同名称,返回列表
name_li = request.form.getlist("name")
# 获取queryString数据用
city = request.args.get("city")
# 判断请求类型
if request.method == "GET":
pass
elif request.method == "POST":
pass
# 获取json数据
j_name = request.json.get("name")
return "name=%s, password=%s" % (name, password)

三、文件上传

前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
<link rel="stylesheet" href="/static/layui/css/layui.css" media="all">
<style>
.layui-upload {
text-align: center;
margin-top: 10%;
} img {
width: 200px;
}
</style>
</head>
<body>
<div class="layui-upload">
<button type="button" class="layui-btn" id="test1">上传图片</button>
<div class="layui-upload-list">
<img class="layui-upload-img" id="demo1">
<p id="demoText"></p>
</div>
</div>
<script src="/static/layui/layui.js" charset="utf-8"></script>
<script>
layui.use('upload', function () {
var $ = layui.jquery
, upload = layui.upload; //普通图片上传
var uploadInst = upload.render({
elem: '#test1'
, url: '/upload'
, before: function (obj) {
//预读本地文件示例,不支持ie8
obj.preview(function (index, file, result) {
$('#demo1').attr('src', result); //图片链接(base64)
});
}
, done: function (res) {
//如果上传失败
if (res.code > 0) {
return layer.msg('上传失败');
}
//上传成功
return layer.msg(res.msg);
}
, error: function () {
//演示失败状态,并实现重传
var demoText = $('#demoText');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function () {
uploadInst.upload();
});
}
});
});
</script>
</body>
</html>

python脚本:

@app.route("/upload", methods=["POST", "GET"])
def upload():
if request.method == "GET":
return render_template("upload.html")
elif request.method == "POST":
files = request.files
if "file" not in files:
return json.dumps({"code": 1, "msg": "上传失败"})
file = files.get("file")
file.save("./static/upload/" + file.filename)
return json.dumps({"code": 0, "msg": "上传成功"})

效果图如下:

Flask框架 之request对象-LMLPHP

05-22 18:12