400 Bad Request: The browser (or proxy) sent a request that this server coul

本文深入探讨了在使用Flask框架时遇到的400错误(错误请求),详细解释了错误产生的原因及如何正确处理JSON数据。文章提供了三种接收JSON数据的方法,并强调了使用request.form与request.get_json的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误类型

[POST]>400 Bad Request: The browser (or proxy) sent a request that this server could not understand.

400 (错误请求) 服务器不理解请求的语法。

使用场景flask

后台报400错误。400错误表示 由于语法格式有误,服务器无法理解此请求。
但后台的接口确实可以进行post请求。之后发现原因是当flask的request.form无法获取到对应的参数时,就会报400错误。
使用post请求时, 若是参数为json数据, request。

更正总结

json数据不能用表单接收, 表单最好也不要接收json数据

Flask 中接收与发送表单方式

from flask import Flask,render_template,request

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

Flask 中接收与发送json 方式详解

(转)https://blog.csdn.net/gymaisyl/article/details/86629874

1、利用flask的request.form.get()方法接收

from flask import Flask
from flask import jsonify
from flask import request
import json
 
@app.route("/login", methods=['POST'])
def login():
	 data_ = request.form.get('data')
	 data = json.loads(data)
	 username = data['username']
	 password = data['password']

	 return jsonify({"login": Login.login(username, password)})  # 返回布尔值

2、 利用flask的request.get_data()方法接收

from flask import Flask
from flask import jsonify
from flask import request
import json

@app.route("/flask/login", methods=['POST'])
def login():
 data = request.get_data()
 data = json.loads(data)
 username = data['username']
 password = data['password']

 return jsonify({"login": Login.login(username, password)}) # 返回布尔值

3、利用flask的request.get_json()方法接收

from flask import Flask
from flask import jsonify
from flask import request


@app.route("/flask/login", methods=['POST'])
def login():
 data = request.get_json()
 username = data['username']
 password = data['password']
 
 return jsonify({"login": Login.login(username, password)}) # 返回布尔值
BadRequest是一个HTTP状态码,表示客户端发送的请求存在语法错误,服务器无法理解。具体地,400 Bad Request表示浏览器(或代理)发送了一个服务器无法理解的请求。这个错误通常发生在请求的语法格式有误的情况下。在你提供的引用中,400 Bad Request错误表明在前端传递参数时存在错误,导致服务器无法理解请求。此错误可能是由于参数错误或格式错误导致的[2]。在Flask中,当使用request.form获取不到对应的参数时,也会返回400错误。因此,如果使用POST请求,并且参数为JSON数据,最好使用request.get_json()方法来接收参数,而不是使用request.form。另外,要确保参数的语法格式正确,以避免出现BadRequest错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [400 Bad Request: The browser (or proxy) sent a request that this server coul](https://blog.csdn.net/a6864657/article/details/98968747)[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* [400 Bad Request: The browser (or proxy) sent a request that this server could not understand.](https://blog.csdn.net/qq_34919833/article/details/104565753)[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
发出的红包

打赏作者

风华浪浪

讨个老婆本呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值