Python Flask request中常见存储参数的介绍

首先从flask模块中导入请求对象:

from flask import request

request.form

通过method属性可以操作当前请求方法,通过使用form属性处理表单数据(本质也是得到一个字典,如果传输的是字典也可以用form)默认的数据类型时ImmutableMultiDict,可以通过parameter_storage_lass改变数据类型。一个简单的例子:

@app.route('/predict', methods=['POST', 'GET'])

def predict():

if request.method == "POST":

img_url = request.form['IMG_URL']

#或者通过get获取

img_url = request.form.get('IMG_URL')

if img_url is None:

return jsonify({'error':'No data was got'}), 400

return img_url

当form属性中不存在这个key时,会引发一个KeyError,会显示一个HTTP400 Bad Request的错误页面,多数情况下可以不用处理这个问题。

request.args

要操作URL(如?key=value)中提交的参数,可以使用args属性。默认的数据类型也是ImmutableMultiDict,可以通过parameter_storage_class改变数据类型。参数获取和form相同

url = 'http://170.0.0.1:5000/pre?id=1&name=zane'

#返回值是{"id" : "1", "name" : "zane"}

#获取某个具体参数:

id = request.args['id']

id = request.args.get('id')

request.values

values结合form和args,默认类型是CombinedMultiDict,可以用values替代form和args。

request.data

data返回的是bytes类型数据,通常传递base64编码的图像数据,会用到data。

base64data = request.data

data = base.b64decode(base64data)

data = np.fromstring(data, np.uint8)

img = cv2.imdecode(data, cv2.IMREAD_COLOR)

request.json

当在Header中设置 Content-Type:application/json,获取的数据降被转换成json数据,不能使用data进行获取,只能用json获取。

request.files

files用于处理文件上传,前提需要设置HTML表单中enctype="multipart/from-data"属性。已上传的文件,被存储在内存活文件系统的临时位置,通过files属性来访问上传文件,每个上传文件都存储在字典属性中,该属性和Python file对象一样,多出一个save()方法。

def allowed_file(filename):

return '.' in filename and \

filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route('/', methods=['GET', 'POST'])

def upload_file():

if request.method == 'POST':

# check if the post request has the file part

if 'file' not in request.files:

flash('No file part')

return redirect(request.url)

file = request.files['file']

# if user does not select file, browser also

# submit an empty part without filename

if file.filename == '':

flash('No selected file')

return redirect(request.url)

if file and allowed_file(file.filename):

filename = secure_filename(file.filename)

file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))

return redirect(url_for('uploaded_file',

filename=filename))

return '''

Upload new File

Upload new File

'''

在使用文件上传的时候,也可以通过Flask-Uploads扩展来实现,这个扩展实现了完整的上传机制,还具有白名单、黑名单等功能。

好文阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。