【问题标题】:How can I fix this error Flask Boolean Form?如何修复此错误 Flask Boolean Form?
【发布时间】:2020-09-19 09:58:47
【问题描述】:

所以,我尝试在 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 错误请求:浏览器(或代理)发送了此服务器无法理解的请求。 键错误:'M'"

【问题讨论】:

    标签: html database flask boolean flask-sqlalchemy


    【解决方案1】:
    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 上看到代码会很有帮助

    【讨论】:

    猜你喜欢
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 2014-03-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多