Curry_warrior 2020-04-18 12:21 采纳率: 50%
浏览 400
已采纳

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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog