Curry_warrior 2020-04-18 12:21 采纳率: 40%
浏览 402
已采纳

Flask form表单返回多个Immutable Dict的问题

我用form表单进行html数据的提交,然后Flask这边用request.form进行读取。我只想要第二个dict里的内容,我好提取key为name的值,但是第一个怎么把它去掉呢或者不影响我程序的执行。现在这个src是这两个字典,而不是一个

图片说明

我的html代码如下:

<form action="{{url_for('handleLocal')}}" method="post">
<input class="uploadImg file1" type="file" name="file1" id="EmployeePicture" hidden accept="image/*"  onchange="showImgToView('EmployeePicture')"/>
<button class="button1" id="submitLocalFile" type="submit" onclick="transmit()" ><span>预测</span></button>

这里的input是用来上传图片的,我后端并不怎么需要它。
我需要的是图片的src,所以我写了个在button提交的function

    function transmit() {
        var transmit_content=$('#change_Image')[0].src;
        $.ajax({
            url: "{{url_for('handleLocal')}}",
            data: {name: transmit_content},
            type: "POST",
            //dataType: "json",
        });
    }

然后是Flask部分代码:

@app.route('/handleLocal',methods=['POST'])
def handleLocal():
**    src=request.form.get('name')**
    data=src[23:-1]
    img_data=base64.b64decode(data+"=")

问题就出在 handleLocal函数中 src=request.form会返回两个字典,我如果get的话一个结果是none,一个结果是我想要的src属性

请教大家如何解决这个问题

  • 写回答

1条回答 默认 最新

  • 毕小宝 博客专家认证 2020-04-18 16:52
    关注

    问题原因分析:
    1、form 指定了 action 方法,这个表单提交的时候只有一个参数 file1 。
    2、提交按钮绑定的事件又发送了一次请求,此时只有一个 name 属性,那么可否调整一下:

    第一,去掉 form 的action 地址,由 submit 按钮的 onclick 方法来提交请求。
    第二, onclick 方法提交的 post 请求参数,后台直接取 name 就可以了。
    

    另外,如果用Action 的话,其实是可以直接获取到文件表单的:
    equest.files.get("filename")来获取单个文件。表单提交肯定是可以取到文件的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 软件定义网络mininet和onos控制器问题
  • ¥15 微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错
  • ¥15 ArcGIS批量裁剪
  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
  • ¥15 Cloudreve保存用户组存储空间大小时报错
  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。