簡體   English   中英

如何修復此錯誤 Flask Boolean Form?

[英]How can I fix this error 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 a 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 可能它不會增加並且它是 Empty。

如果我能在 GitHub 上看到代碼,那會很有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM