请求数据和获取响应
1.请求数据及其获取
1.1 请求相关数据
请求相关的数据就是发送时带的参数
方式 | 解释 |
---|---|
固定参数 | 路由里带的参数,发送请求时必须带的参数 |
字符串:args | 路由后跟string,可有可无 |
表单:form | 相当于发送的post请求 |
上传文件:file | 向服务器里发送请求,上传文件 |
请求头:headers | 请求头里携带请求信息 |
请求方法:method | 请求所使用的请求方法 |
URL地址 | 请求URL地址 |
1.2 固定参数与转换器
1.2.1 固定参数
固定参数:指在URL中固定的, 是不可获取的一部分, 区别与查询字符串, 查询字符串是可有可无的.
@app.route('/hello/<int:id>/<name>')
def hello(id,name):
return "接收到的ID是:%s,name是%s"%(id,name)
1.2.2 转换器
转换器就是使一个字符串满足一个regx的属性,进行正则判断
自定义转换器可以满足需要的功能
# 1.导入转换器基类
from werkzeug.routing import BaseConverter
# 2.继承转换器基类并实现regex方法
class PhoneConverter(BaseConverter):
regex = r'1[3-9][0-9]{9}'
# 3.把自定义转换器挂载到flask对象上
app.url_map.converters["phone"] = PhoneConverter
# 使用自定义转换器
@app.route('/phone/<phone:my_phone>')
def get_phone(my_phone):
return "当前的手机号是:%s"%my_phone
1.3 查询参数的获取
# 查询参数的获取
# 1.导入request对象
from flask import request
@app.route('/query')
def query():
# 把不可变字典类型转换为普通的dict类型
params = request.args.to_dict()
print(params)
print(type(params))
name = request.args.get("name")
age = request.args.get("age")
return "当前的名字是%s,年龄是%s"%(name,age)
1.4 查询表单数据的获取
from flask import request
@app.route("/form",methods=["post"])
def form():
name = request.form.get("name")
age = request.form.get("age")
return "名字为%s,年龄为%s"%(name,age)
1.5 文件上传
from flask import request
@app.route("/form",methods=["post"])
def form():
name = request.form.get("name")
age = request.form.get("age")
return "名字为%s,年龄为%s"%(name,age)
@app.route("/upload",methods=["post"])
def upload():
img = request.files.get("img")
print(img)
img.save("./static/01.png")
return "上传文件"
2. 响应数据
2.1 响应返回HTML 页面
from flask import render_template
@app.route('/page')
def page():
return render_template("hello.html")
2.2 重定向跳转页面
# 重定向跳转页面
from flask import redirect
@app.route('/jump')
def jump():
return redirect("https://www.baidu.com/")
2.3 返回json数据
from flask import jsonify
@app.route("/return_json")
def return_json():
data = {
"name" : "zhangsan",
"age" : 18,
"action":["吃","睡觉","上厕所"]
}
return jsonify(data)
2.4 返回元组数据
from flask import jsonify
@app.route("/return_tuple")
def return_tuple():
return ("hello",400,{
"aaaa":"bbbb"
})
3. 自定义响应
from flask import make_response
@app.route("/return_obj")
def return_obj():
resp = make_response("hello")
resp.status = "404"
resp.headers["aaa"] = "bbb"
return resp