通过Flask发送POST数据

时间:2014-07-03 18:04:35

标签: javascript python html flask

我正在尝试运行一个函数来运行一个函数,用一个相当大的json字典来更新表单输入的值,然后我想在我的烧瓶后端获取它。所以我有以下HTML和javascript:

<head>
<!--some info here -->
<script>
        function AddPostData() {
            var data = editor.getValue();
            //this editor.getValue() gets the json string and it is working 
            //as validated by an alert message

            var formInfo = document.forms['json_form'];
            formInfo.elements["json_data"].value = data;
            alert(data)
        }
    </script>
  </head>
  <body>

    <!-- I have the json editing GUI here -->

    <form id="json_form" method="POST" action="/test">
        <input type="hidden" name="json_data" value="" />
        <input type="submit" value="Submit" onclick="AddPostData();">
    </form>

然后这是我为Flask提供的python。

@app.route('/test', methods=['GET', 'POST'])
def test():
    if request.method == 'POST':
        print (request.data)
        the_json=request.data
        #this template simply prints it out and all that I get is b"
        return render_template('testing.html', the_json=the_json)

任何想法出了什么问题?当我将字符串硬编码到数据变量中时,我仍然没有在request.data字段中获得任何内容。确切地说,我得到一个b后跟一个引文:b“

我认为这是错误的,因为它实际上并没有将json放入输入的值字段中。

2 个答案:

答案 0 :(得分:1)

the_json = request.form.get('json_data', None)

而不是

 the_json=request.data

将在硬编码部分工作(当然,但我不太确定你的java脚本是否有效/不是我的专业领域,但它看起来还不错。)。

答案 1 :(得分:1)

取决于Content-Type

的情况下
Content-Type: application/json

你可以使用

request.get_json()

以及

的情况
Content-Type: application/x-www-form-urlencoded (like what you wanted to do)

你可以使用

# to get all the items
dict(request.form.items())
# to specific item from post data
request.form.get("json_data")