flask表单提交时遇到的问题-bad request(400)

首先我们看看这个错误长什么样子

这里写图片描述

让我们看看源代码

前端:

<form method="post" action="login">
    姓名:<input type="text" id="name" ><br>
    密码:<input type="password" id="password" ><br>
    <input type="submit" value="提交">
</form>

后端:

# flask获取request的值,需要导入下面这个包
from flask import request

@app.route('/login', methods=['get', 'post'])
def login():
    print request.method
    if request.method == 'POST':
        name = request.form['name']
        password = request.form['password']
        return render_template('index.html', name=name, password=password)

原因

debug的时候,发现程序执行到request.form[‘name’];这一步的时候就报错了,一开始以为是文档太久的问题,但是去看了最新的flask文档,获取表单值的方法没错。然后想了下,可能和请求过来的表单值有关。上网找了下资料才知道,原来form表单,会将它的输入框中的值,绑定到’name’属性中,后端取值的时候也是根据‘name’属性的值去取值,而不是根据到id,所以将前端代码的input标签中添加一个name属性就可以了,代码如下:

<form method="post" action="login">
    姓名:<input type="text" id="name" name="name"><br>
    密码:<input type="password" id="password" name="password"><br>
    <input type="submit" value="提交">
</form>
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Flask表单提交是指在Flask框架中通过表单向服务器提交数据的过程。Flask提供了多种方法来实现表单提交,其中包括使用HTML表单以及使用Flask-WTF扩展中的WTForms库来创建和处理表单。 在使用HTML表单的情况下,可以通过在Flask模板中编写HTML表单代码来创建表单。表单的提交动作可以通过指定表单的method为POST,并设置action属性为请求的URL路径来实现。然后,在Flask应用的路由函数中,可以使用request.form来获取表单中的数据,进而进行处理。这种方式比较常见且简单,适用于简单的表单提交场景。 另一种更灵活和强大的方式是使用Flask-WTF扩展中的WTForms库,它可以帮助我们更方便地创建和处理表单。首先需要安装Flask-WTF库,可以通过运行`pip install -i https://pypi.douban.com/simple Flask-WTF`来完成安装。 使用WTForms,我们可以通过定义一个继承自`flask_wtf.FlaskForm`的表单类来创建表单。在表单类中,可以定义各种字段,如文本输入框、单选框、复选框等,并设置相应的验证规则。在Flask应用的路由函数中,可以通过实例化表单类来获取表单对象,并使用`form.validate_on_submit()`方法来验证表单数据的合法性。如果验证通过,可以通过`form.fieldname.data`来获取表单字段的值,进而进行处理。这种方式更加灵活且易于扩展,适用于复杂的表单提交场景。 总结起来,Flask表单提交可以通过使用HTML表单或Flask-WTF的WTForms库来实现。使用HTML表单需要在模板中编写HTML代码,并在Flask应用的路由函数中使用`request.form`来获取表单数据。而使用WTForms需要定义一个表单类,并在路由函数中实例化表单类,然后通过调用相应的方法来验证和处理表单数据。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Flask表单提交的方法](https://blog.csdn.net/weixin_36380516/article/details/80008602)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Web前端之Flask框架--表单操作](https://blog.csdn.net/ANingL/article/details/104724255)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值