• Flask系列02--Flask中的request


    一.Flask中的request方法

    1.数据相关

    #flask中request,render_template等方法要通过引包的方式引入
    from flask import request 
    ​
    request.args    # 获取URL中的数据
    request.form    # 获取form表单中(FormData)的数据
    request.values  # 获取args+form 知道就可以了
    request.data    # 流, 获取请求体中的原始数据
    request.json    # 字典, 请求头中带有Content-Type:application/json 将请求体中的数据反序列化到json中 
    但是在data中依然存储这原始数据bytes
    ​ request.files 获取FormData中的文件数据 request.files.get("my_file") request.files.save(默认提交的文件名)

    2.常用方法

    request.cookies  # 将cookies中信息读取出来
    request.headers  # 获取请求头中的信息

    3.获取路径相关

    # 获取当前的url路径
    print(request.path)# /req
    # 当前url路径的上一级路径
    print(request.script_root) 
    ​
    # 当前url的全部路径
    print(request.url) # http://127.0.0.1:5000/req
    # 当前url的路径的上一级全部路径
    print(request.url_root ) # http://127.0.0.1:5000/

    二.request方法使用

    1.request.method 获取http请求的方式,Flask 的 request 中给我们提供了一个 method 属性里面保存的就是前端的请求的方式

    print(request.method) # POST 看来可以使用这种方式来验证请求方式了

    2.request.form 获取form表单中传递过来的值

    print(request.form)  # ImmutableMultiDict([('key', 'asd')])
    # ImmutableMultiDict 它看起来像是的Dict
    
    print(request.form["key"])  # 'asd'
    print(list(request.form.keys()))  # ['key'] 
    
    # 将它的结果转化为字典便于使用, 其中有些坑,小心
    req_dict = dict(request.form)
    req_dict =  request.form.to_dict()

    3.request.args  其中包含url所有的参数

    如图访问,结果如下

    print(request.args)  #  ImmutableMultiDict([('name', '1')])

    4. request.values  包含所有参数,只要是参数就包含

    输入如图所示, 结果如下

    print(request.values) 
    # CombinedMultiDict([ImmutableMultiDict([('name', '1')]), ImmutableMultiDict([('值', 'asd')])])

     注意

        如果url和form中的Key重名的话,使用vlaues.to_dict()时,form中的同名的key中value会被url中的value覆盖,但是request.values()的结果还是有两个

    # http://127.0.0.1:5000/test?name=1
    print(request.values.to_dict())  # {'name': 1}
    
    print(request.values)  
    # CombinedMultiDict([ImmutableMultiDict([('name', '1')]), ImmutableMultiDict([('name', '10')])])

    5.request.cookies 读取cookies中的信息,存在浏览器端的字符串都会包含,前提是要开启浏览器的cookies

    6.request.headers 获取本次请求的请求头

    print(request.headers)    
    
    Host: 127.0.0.1:5000
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9

    7. request.data 无法处理的数据就变成了字符串存放在data中

    request是基于mimetype进行处理的,mimetype的类型以及字符串 : http://www.w3school.com.cn/media/media_mimeref.asp,如果不属于上述类型的描述,request就会将无法处理的参数转为Json存入到 data 中,其实我们可以将 request.data , json.loads 同样可以拿到里面的参数

    8. request.files  其中包含上传的文件, flask将这个操作做了一些封装,使用很简单

    html代码

     

    print(request.files)  # ImmutableMultiDict([('file', <FileStorage: 'test.txt' ('text/plain')>)])
    print(request.files["file"])  # <FileStorage: 'test.txt' ('text/plain')>
    my_file = request.files["file"]
    my_file.save("test.txt")  # 保存文件,里面可以写完整路径+文件名

    9.request.json 在请求头中写入了 "application/json" 使用 request.json 则返回json解析数据, 否则返回 None

  • 相关阅读:
    dotnet Framework 源代码 类库的意思
    dotnet Framework 源代码 类库的意思
    dotnet Framework 源代码 · Ink
    dotnet Framework 源代码 · Ink
    dotnet core 用值初始化整个数组
    dotnet core 用值初始化整个数组
    dotnet core 隐藏控制台
    dotnet core 隐藏控制台
    PHP mt_rand() 函数
    PHP mt_getrandmax() 函数
  • 原文地址:https://www.cnblogs.com/robertx/p/10680664.html
Copyright © 2020-2023  润新知