html - 如何修复此错误 Flask Boolean Form?
问题描述
所以,我尝试在 db 中输入布尔类型,但它不起作用,总是出错。但是除了布尔值之外,其他列都可以正常工作。其他形式正在工作,我建议在 Flask 中出现错误。
HTML
....
**<input type="checkbox" name="S">
<input type="checkbox" name="M">
<input type="checkbox" name="L">
<input type="checkbox" name="XL">
<input type="checkbox" name="XXL">**
.....
烧瓶
from flask import Flask, render_template, request, redirect
from flask_sqlalchemy import SQLAlchemy
from cloudipsp import Api, Checkout
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///shop.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 0
db = SQLAlchemy(app)
class Item(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(36), nullable=False)
newPrice = db.Column(db.Integer, nullable=False)
oldPrice = db.Column(db.Integer, nullable=True)
star = db.Column(db.Integer, nullable=True)
colors = db.Column(db.Integer, nullable=False)
S = db.Column(db.Boolean, nullable=True, default=False)
M = db.Column(db.Boolean, nullable=True, default=False)
L = db.Column(db.Boolean, nullable=True, default=False)
XL = db.Column(db.Boolean, nullable=True, default=False)
XXL = db.Column(db.Boolean, nullable=True, default=False)
def __repr__(self):
return str(self.id)
@app.route('/create', methods=['POST', 'GET'])
def create():
if request.method == "POST":
title = request.form['title']
newPrice = request.form['newPrice']
oldPrice = request.form['oldPrice']
star = request.form['star']
colors = request.form['colors']
S = request.form['S']
M = request.form['M']
L = request.form['L']
XL = request.form['XL']
XXL = request.form['XXL']
item = Item(title=title, newPrice=newPrice, oldPrice=oldPrice, star=star, colors=colors, S=S, M=M, L=L, XL=XL, XXL=XXL)
try:
db.session.add(item)
db.session.commit()
return redirect('/shop')
except:
return "Error Pls Enter Correct Dates"
else:
return render_template('create/index.html')
它总是返回“错误请输入正确的日期”(尝试...除了...)。当我不触摸复选框(False)时,丢弃错误:“werkzeug.exceptions.BadRequestKeyError werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent an request that this server could not understand. KeyError: 'M' "
解决方案
from flask import Flask, render_template, request, redirect, url_for,jsonify
import sqlite3
from flask_sqlalchemy import SQLAlchemy
from cloudipsp import Api, Checkout
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///shop.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 0
db = SQLAlchemy(app)
class Item(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(36), nullable=False)
newPrice = db.Column(db.Integer, nullable=False)
oldPrice = db.Column(db.Integer, nullable=True)
star = db.Column(db.Integer, nullable=True)
colors = db.Column(db.Integer, nullable=False)
S = db.Column(db.Boolean, nullable=True, default=False)
M = db.Column(db.Boolean, nullable=True, default=False)
L = db.Column(db.Boolean, nullable=True, default=False)
XL = db.Column(db.Boolean, nullable=True, default=False)
XXL = db.Column(db.Boolean, nullable=True, default=False)
db.create_all
def __repr__(self):
return str(self.id)
@app.route('/create', methods=['POST', 'GET'])
def create():
if request.method == 'GET':
return render_template('create/index.html')
else:
title = request.form.get('title')
newPrice = request.form.get('newPrice')
oldPrice = request.form.get('oldPrice')
star = request.form.get('star')
colors = request.form.get('colors')
S = request.form.get('S')
M = request.form.get('M')
L = request.form.get('L')
XL = request.form.get('XL')
XXL = request.form.get('XXL')
item = Item(title=title, newPrice=newPrice, oldPrice=oldPrice, star=star, colors=colors, S=S, M=M, L=L, XL=XL, XXL=XXL)
try:
db.session.add(item)
db.session.commit()
db.session.close()
return redirect(url_for('shop'))
except:
return "Error Pls Enter Correct Data"
if __name__ == '__main__': app.run()
你有在模板目录中创建文件夹吗?
如果问题仍然存在,请检查 id 可能它不会增加并且它是空的。
如果我可以在 GitHub 上看到代码,那会很有帮助
推荐阅读
- hyperledger-fabric - 如果一个同行宕机了怎么办
- php - Laravel 5.7 AJAX POST 请求已取消
- java - Java 从文件中读取。结果不好
- python - 过滤来自 many2one 字段的值
- laravel - Laravel / AsgardCMS 验证复杂/复合实体
- ios - 如何在 Twilio 的可编程聊天中将 ${USER_FRIENDLY_NAME} 显示为标题并将 ${MESSAGE} 显示为推送通知有效负载的正文?
- java - Java:无法获取文件的绝对路径
- sql-server - 如何优化此 SQL Server 查询
- android - 如何使用改造android显示多个图像
- sqlite - 检查 sqlite3 中的特定序列