Curry_warrior
2020-04-18 12:21
采纳率: 55.2%
浏览 375

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")来获取单个文件。表单提交肯定是可以取到文件的。

    已采纳该答案
    打赏 评论

相关推荐 更多相似问题