Flask—Request模块

版权声明:此博客出自HuQi,感谢您的转载 https://blog.csdn.net/JSYhq/article/details/88616328

一、Request 方法介绍

1. Request中 url 的方法使用

# 导入request模块
from flask import Flask, request


1. 查看请求方式
    request.method
2. 获取URL上的参数,http://192.168.1.1:9090/hello?page=10
    request.args.get("page") ->ImmutableMultiDict([('page','10')])
    备注:将获取参数转为字典,request.args.to_dict()->{'page':'10'}
3. 请求头信息
    request.headers
4. 请求url地址:http://0.0.0.0:9527/req?id=10 -> 获得 /req
    request.path
5. 请求url地址:http://127.0.0.1:5000/
    request.url
6. 访问:http://0.0.0.0:9527/req?id=10 ->获得http://127.0.0.1:9527/req
    request.base_url
7. 访问:http://0.0.0.0:9527/req?id=10 -> 获得 127.0.0.1:9527
    request.host
8. 访问:http://0.0.0.0:9527/req?id=10 -> 获得 http://127.0.0.1:9527/
    request.host_url

2. Request中 form 的使用

"""
formdata数据(<form></form>内的称为formdata)
"""

<form action="" method="post">
    <input type="text" name="username">
    <input type="submit">
</form>

1. 获取POST提交过来的数据
    request.form -> ImmutableMultiDict([('username','slrc')])
    request.form.to_dict() -> 直接转成字典{'username':'slrc'}
    request.form.get("username") -> 'slrc'

3. Request中两个特殊值 json、data

1. request.json
    如请求头Content-type:application/json -> 可取出POST提交的值,原理这个
    request.json调用的是request.get_json()这个函数,但是get_json默认只对
    mime为application/json的请求正确解析
    解决方法:
    (1)http请求增加Content-type:application/json 的header
    (2)使用request.get_json(force=True)忽略mimetype

2. request.data
    可以获取未经处理过的原始数据,如果格式是json的,则取得json字符串,排序和
    请求参数一致

3. request.values    
    包含 args,formdata 中的所有数据;其中formdata数据优先

二、Request 中methods

# 如果视图中含有多种请求方式,需要在路由添加methods参数,必须要有GET;
# 如果只写POST,GET请求救收不到了,路由默认是GET

@app.route("/req", methods=["GET","POST"])
def req():
    if request.method == "GET":
        return render_template("login.html")
    else:
        return jsonify({"username":"hello"})

三、Request 中files

<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="myfile">
    <input type="submit" value="提交">
</form>
@app.route("/home", methods=["GET","POST"], default=({'name':1}))
def home(name):
    print('我是home')
    
    if request.method == "GET":
        return render_template("home.html")
    else:
        session["user"] = 'monkey'
        # 利用files中文件名,获取files对象
        file_obj = request.files.get("myfile")
        1. 使用前端原始的文件名,作为存储服务端时的文件名
        file_obj.save(file_obj.filename)
        2. 服务端自定义名字,但是文件类型必须和前端源文件类型一致
        file_obj.save("hello.py")
        
        return render_template("img.html")

猜你喜欢

转载自blog.csdn.net/JSYhq/article/details/88616328