提问人:Saurias 提问时间:10/23/2023 最后编辑:Péter SzilvásiSaurias 更新时间:10/24/2023 访问量:54
Request.form.get() 返回 None
Request.form.get() returns None
问:
我正在尝试使用 Python 和 Flask 建立一个预算跟踪器网站,您可以在其中跟踪您的花钱方式。我包含了一个部分,您可以在其中选择支出类型,但是当我尝试使用 Flask 检索用户选择时,返回.request.form.get()
None
我还尝试将所选变量存储在会话中,但它不起作用,我尝试了,但它给了我 400 错误。request.form\["selected"\]
有人知道我如何解决这个问题吗?
这是我的HTML:
<form action="/" method="post" enctype="multipart/form-data">
<h3 class="h3">Your expenses</h3>
<div class="top">
<input type="number" class="form-control mx-auto w-auto" placeholder="$0.00" aria-describedby="button-addon2">
</div>
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">Add Expense</button>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="exampleModalLabel">Category: </h1>
<div>
<select id="category-select" class="form-select" aria-label="Default select example">
<option id="selected" name="selected" selected>Select type</option>
<option id="home" name="home" value="0">Home</option>
<option id="loans" name="loans" value="1">Loans</option>
<option id="entertainment" name="entertainment" value="2">Entertainment</option>
<option id="transportation" name="transportation" value="3">Transportation</option>
<option id="other" name="other" value="5">Other</option </div>
</select>
</div>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<input type="number" id="amount" name="amount" class="form-control" placeholder="$0.00" aria-describedby="button-addon2" min="1">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="submit" id="addBtn" class="btn btn-primary">Add money</button>
</div>
</div>
</div>
</div>
</form>
以下是我的 Python 代码:
@app.route("/", methods=["GET", "POST"])
@login_required
def index():
if request.method == "GET":
return render_template("index.html")
else:
# Get data from user input
user_id = session["user_id"]
date = datetime.datetime.now()
# Check user cash
usr_cash = db.execute("SELECT cash FROM users WHERE id = ?", user_id)[0]["cash"]
# Check expense amount
amount = int(request.form.get("amount"))
# Check if user has enough money for expense
if usr_cash < amount:
return apology("Not enough money for this expense! Try adding more income")
# Update user cash after expense
updt_cash = usr_cash - amount
# Update database
db.execute("UPDATE users SET cash = ? WHERE id = ?", updt_cash, user_id)
# Create transactions list
selected = request.form.get("selected")
if selected == "Home":
db.execute("INSERT INTO category (home, user_id, date) VALUES (?, ?, ?)", amount, user_id, date)
elif selected == "Loans":
db.execute("INSERT INTO category (loans, user_id, date) VALUES (?, ?, ?)", amount, user_id, date)
elif selected == "Entertainment":
db.execute("INSERT INTO category (entertainment, user_id, date) VALUES (?, ?, ?)", amount, user_id, date)
elif selected == "Transportation":
db.execute("INSERT INTO category (transportation, user_id, date) VALUES (?, ?, ?)", amount, user_id, date)
elif selected == "Other":
db.execute("INSERT INTO category (other, user_id, date) VALUES (?, ?, ?)", amount, user_id, date)
print(selected)
return render_template("index.html")
答:
0赞
vintastic
10/24/2023
#1
你说错了。select
你只需要在你的.摆脱和 .value
options
id
name
此外,flask 正在为您的领域寻找名称。在此添加一个:
<select id="category-select"
评论
enctype="multipart/form-data"
print(request.form)
request.form
不应该是,它应该是字典,可能是空的。None