flask框架——获取请求处理响应
一、获取请求
- 获取get请求: request.args
- 访问:http://127.0.0.1:5000/user?username=ceshi
from flask import Flask, request # 创建Flask应用程序实例 app=Flask(__name__) @app.route('/user',methods=['GET']) def get_user(): #获取URL中的请求参数 url_param = request.args #查看获取到的请求参数的类型 print(type(url_param)) #获取请求参数中的username对应的值 username=url_param.get('username') return f'Hello,{username}!' #运行应用程序 if __name__ == '__main__': app.run()
- 获取post请求: 请求体是Json,request.json
from flask import Flask, request # 创建Flask应用程序实例 app=Flask(__name__) @app.route('/data', methods=['POST']) def process_data(): #获取 JSON格式请求体 data = request.json #查看获取到的请求参数的类型 print(type(data)) #获取请求体中对应字段的值 name=data.get('name') age = data.get('age') return f'Name:{name},Age:{age}' #运行应用程序 if __name__ == '__main__': app.run()
- 获取post请求: form表单request.form
from flask import Flask, request # 创建Flask应用程序实例 app=Flask(__name__) @app.route('/login',methods=['POST']) def login(): #获取表单格式请求体 user_info=request.form #查看获取到的请求参数的类型 print(type(user_info)) #获取请求体中对应字段的值 username=user_info.get('username') password = user_info.get('password') return f'Welcome,{username}!' #运行应用程序 if __name__ == '__main__': app.run()
- 获取post请求: 文件请求体 request.files
from flask import Flask, request # 创建Flask应用程序实例 app=Flask(__name__) @app.route('/upload', methods=['POST']) def upload_file(): #获取文件格式请求体 file=request.files # 获取请求URL r_url = request.url # 获取请求域名 r_host = request.host # 获取请求头信息 r_headers = request.headers # 获取请求方法 r_method = request.method print(r_url, r_host, r_headers, r_method) #查看获取到的请求参数的类型 print(type(file)) #获取请求体中对应字段的值 f=file.get("file") #保存文件 #需要提前创建uploads目录,secure_filename可以确保文件名安全 f.save('./uploads/' + secure_filename(f.filenam1e)) # 判断请求方法为POST if r_method == 'POST': # 判断请求头中包含My-Header字段并且值为hogwarts if r_headers.get('My-Header') == "hogwarts": # 保存文件 f = file.get("file") f.save('./uploads/' + secure_filename(f.filename)) return f'File {f.filename} is saved! URL is {r_url},host is{r_host}' return f"My-Header is missing!" return f'File {f.filename}is saved!' #运行应用程序 if __name__ == '__main__': app.run()
二、处理响应
# 处理响应 from flask import Flask,jsonify,render_template,make_response #创建Flask应用程序实例 app = Flask(__name__) #定义路由和视图函数 @app.route('/text') def text_res(): return '返回文本' # 返回元组,返回内容:响应体、状态码、header @app.route('/tuple') def tuple_res(): return "你好呀",200,{"hogwarts":"Harry"} # 返回json格式响应体 @app.route('/json') def get_json(): #jsonify({'status':0}) 直接传字典进来 return jsonify(status=1, name="lily", age=20) # 关键字传参 # 直接返回字典构造json格式响应 @app.route('/dict') def get_dict(): return{'status':0} # 返回html @app.route('/html') def get_html(): #调用render_template方法,传入html文件的名称。 #注意html文件必须在templates目录下 return render_template('demo.html') #定义路由和视图函数 @app.route('/') def index(): resp = make_response(render_template('demo.html')) #设置cookie resp.set_cookie('username','the username') #设置响应头信息 resp.headers["hogwarts"] = "Hary" return resp if __name__ == '__main__': app.run(host='0.0.0.0',port=5001,debug=True)