python - 400 错误请求:KeyError:
问题描述
我正在尝试创建一个在线书店。我真的无法弄清楚这段代码有什么问题。它显示以下错误:
werkzeug.exceptions.HTTPException.wrap.<locals>.newcls: 400 Bad Request: KeyError: 'roomno'
@app.route('/order_book',methods=['GET','POST'])
def order_book():
if not session.get('logged_in'):
return render_template('user_login.html')
user_id=session['userid']
cur=connection.cursor()
cur.execute("SELECT * FROM address WHERE user_id=%s",[user_id])
addr_data=cur.fetchone()
if request.method == 'POST':
book_id = request.form['book_id1']
if not addr_data:
if request.method == 'POST':
room_no = request.form['roomno']
building = request.form['building']
street = request.form['street']
city = request.form['city']
zipcode = request.form['zipcode']
cur.execute("INSERT INTO address(user_id,room_no,building,street,city,zipcode) VALUES(%s,%s,%s,%s,%s,%s)",(userid,room_no,building,street,city,zipcode))
connection.commit()
print('Address Added')
return redirect(url_for('order_book'))
return render_template('address.html')
cur.execute("SELECT * FROM books WHERE book_id=%s",[book_id])
book_data=cur.fetchone()
cur.execute("SELECT * FROM login WHERE user_id=%s",[user_id])
cust_data=cur.fetchone()
cur.close()
print(cust_data)
print(addr_data)
print(book_data)
return render_template('order_book.html',addr_data=addr_data,book_data=book_data,cust_data=cust_data)
html代码
order.html
<html>
<h1>PLACE ORDER</h1><br>
<h5><a class="card-title" id="" href="">{{ books_data[0] }}</a></h5>
<h4>{{ books_data[1] }}</h4>
<span>{{ books_data[2] }}</span>
<form action="placeorder" method="POST">
<div class="nav-link">
<div class="form-group">
Room no<br><input type="text" name="roomno" value={{ addr_data[2] }} disabled><br><br>
building<br><input type="text" name="building" value={{ addr_data[3] }} disabled><br><br>
street<br><input type="text" name="street" value={{ addr_data[4] }} disabled><br><br>
city<br><input type="text" name="city" value={{ addr_data[5] }} disabled><br><br>
zipcode<br><input type="text" name="zipcode" value={{ addr_data[6] }} disabled><br><br>
Mobilenumber<br><input type="text" name="phoneno" value={{ cust_data[4] }} disabled><br><br>
Email<br><input type="text" name="emailids" value={{ cust_data[3] }} disabled><br><br>
<input type="text" name="book_id" value={{ book_data[1] }} style="display:none">
<input type="text" name="user_id" value={{ cust_data[0] }} style="display:none">
<input type="text" name="book_price" value={{ book_data[8] }} style="display:none">
<input type="submit" class="btn btn-primary" value="Place Order">
</form>
</div>
</div>
</html>
我尝试更改 html 页面,并尝试更改 db。我不知道该怎么办。
解决方案
问题是您的输入字段被标记为禁用。禁用的输入将不会被发布。有关详细信息,请参阅将不提交禁用输入的值。一些解决方法是使用readonly="readonly"
or <input type="hidden">
,这取决于您是否希望用户看到输入。您还可以在提交表单时通过 JavaScript 删除禁用的标签。做任何这些事情都应该导致你的输入值被正确发布,然后你的 Flask 后端应该接收数据。
推荐阅读
- python - 来自实验不确定性的 statsmodels WLS 中的权重使用什么值?
- swift - 我可以通过 llvm opt 工具快速加载我的 llvm 通行证吗?
- javascript - 在不使用服务器和数据库的情况下,如何抵制在网站中添加 JavaScript 在运行时添加的数据
- c# - C# - 返回任务
或价值任务 是否可以事先知道结果? - python - 如何在 Python 中扫描游戏中的每个图块?
- visual-studio-code - Visual Studio Code调试中Launch via NPM和Launch via npm有什么区别
- amazon-elastic-beanstalk - 第一次创建帐户时亚马逊云的高请求使用率
- gnu-make - 有没有办法验证给定的目标在makefile中被标记为.PHONY?
- gtk3 - 使用vala单击时如何使gtk按钮执行终端命令
- reactjs - 如何使用 React 显示 Firestore 数据