烧瓶表格数据为空

时间:2020-08-21 19:18:24

标签: python flask

我用烧瓶创建了一个表格。这是处理来自此表单的请求的python代码:

@app.route("/submitclips/", methods=['GET', 'POST'])
def submitclips():
   print(request)
   print(request.method)
   result = request.form.to_dict(flat=False)
   print(result)
   print(request.data)

HTML代码:

<form action="/submitclips" method="POST">
<input type="hidden" name="taskpath" value="paththotask">
<table>
    <th>Video</th>
    <th>Mute</th>
    <th>Delete</th>
    <th>Keep</th>
    
    <tr>
        <td>
            <video width="320" height="240" controls>
              <source src="videosource.mp4" type="video/mp4">
            </video>
        </td>
        <td>
            <input type="radio" id="name$mute" name="name" value="mute">
        </td>
        <td>
            <input type="radio" id="name$delete" name="name" value="delete">
        </td>
        <td>
            <input type="radio" id="name$keep" name="name" value="keep" checked>
        </td>
    </tr>
</table>
<input type="submit">
</form>

这是一个表,具有多个行,我更改了值以使其更具可读性。我保证所有名称都应该是唯一的。

它下面有一些代码,但是由于该表单似乎为空,因此它在那里崩溃。我已经检查了HTML,它是正确的,所有输入都有一个名称。我还在google chrome上记录了网络流量以进行测试,我可以看到请求数据中存在该表格中的所有数据。因此,我很确定在前端它是正确的。问题在于它只是没有显示在此方法中。在代码中,您可以看到几个打印语句,所有这些语句都向我显示空数据,而不是我在chrome浏览器中可以看到的数据。该方法是GET,我不知道它是否应该是GET。在HTML中,我选择了它作为POST方法,但是如果我从python代码中删除GET选项,它会给我一个“不允许的方法”错误。

我不知道该怎么办,这是一些较旧的代码,这些代码曾经在Windows机器上运行。我没有做任何更改,但是现在我正在linux上工作,它已经完全损坏了,没有任何一种形式有效,所有的数据都是空的。

2 个答案:

答案 0 :(得分:0)

在这里您提到端点/submitclips具有方法GET和POST。这意味着每当我点击url“ baseurl / submitclips”时,就会执行此功能。在函数内部,您尚未指定将对哪种方法进行响应,即,如果我使用GETPOST调用端点,则将以相同的方式进行处理。这不是一个好习惯。我建议你放一些类似的东西:

if request.method == 'POST'if request.method == 'GET'可以根据方法的类型来区分执行。

现在进入HTML,您必须具有将请求发送到服务器的HTML。如果这些数据来自表单,则可以在表单中添加两个属性,

<form method="post"><form action="/submitclips">指定在提交此表单时,您将通过POST方法将表单数据发送到“ / submitclips” URL。看起来像这样。

<form method="post" action="/submitclips"">

对于服务器端,

def submitclips():
   if request.method == 'POST' :
       print(request)
       print(request.method)
       result = request.form.to_dict(flat=False)
       print(result)
       print(request.data)

在那之后应该可以工作。

答案 1 :(得分:0)

我发现了错误。我的HTML代码会将表单提交给“ / submitclips”,而python代码接收到来自“ / submitclips /”的请求。不过,我不知道为什么这是错误的,我为flask遵循的教程特别告诉我,在末尾加斜杠意味着它可以接收来自“ / submitclips”和“ / submitclips /”的请求。这在我的Windows机器上也可以使用,但是在我的linux机器上不能再使用了。我很高兴解决了这个问题,但是如果有人对为什么这是错误的有一个解释,请随时回答。