我在CS50财务方面有另一个问题,我真的很想得到一些帮助。
所以我正在研究购买部分,我实现了一个额外的步骤,你输入你想要的股票,你想要多少股票,然后它会带你到一个新的html页面来确认你想购买股票。这一页告诉你要买多少股,花多少钱,买完股票后你的现金余额是多少。
我的问题是,当我在确认页面上实际购买股票时,我会发现一些错误,这些错误说我的变量(特别是平衡,股票和price_per_share)是没有定义的,我不知道为什么。我将在下面附上我的代码的相关部分。再次感谢。
Application.PY:
@app.route("/buy", methods=["GET", "POST"])
@login_required
def buy():
if request.method == "POST":
quote = lookup(request.form.get("symbol"))
if quote == None:
return apology("invalid symbol", 400)
try:
shares = int(request.form.get("shares"))
except:
return apology("shares must be a positive integer", 400)
if shares <= 0:
return apology("can't buy less than or 0 shares", 400)
users= db.execute("SELECT cash FROM users WHERE id= :user_id", user_id=session["user_id"])
cash_remaining = users[0]["cash"]
price_per_share = quote["price"]
total_price = price_per_share * shares
balance = cash_remaining-total_price
symbol=quote["symbol"]
return render_template ("confirmation.html", cash_remaining=cash_remaining, price_per_share=price_per_share, total_price=total_price,shares=shares, symbol=symbol, balance=balance)
else:
return render_template ("buy.html")
@app.route("/confirmation", methods=["GET", "POST"])
@login_required
def confirmation():
if request.method == "POST":
db.execute("UPDATE users SET cash = cash = :balance WHERE id = :user_id", balance=balance, user_id=session["user_id"])
db.execute("INSERT INTO transactions (user_id, symbol, shares, price_per_share) VALUES(:user_id, :symbol, :shares, :price_per_share)",
user_id=session["user_id"],
symbol=request.form.get("symbol"),
shares=shares,
price_per_share=price_per_share)
flash ("Bought!")
return render_template("index.html")
else:
return render_template("confirmation.html")以下是我的buy.html代码,以备需要时使用:
{% extends "layout.html" %}
{% block title %}
Quote
{% endblock %}
{% block main %}
<form action="/buy" method="post">
<div class="form-group">
<input autocomplete="off" autofocus class="form-control" name="symbol" placeholder="Symbol" type="text" required/>
</div>
<div class="form-group">
<input autocomplete="off" autofocus class="form-control" name="shares" placeholder="Shares Wanted" type="number" min="1" required />
</div>
<button class="btn btn-primary" type="submit">Get Price</button>
</form>
{% endblock %}最后,我的confirmation.html:
{% extends "layout.html" %}
{% block title %}
Quote
{% endblock %}
{% block main %}
<form action="/confirmation" method="post">
<p>Stock Symbol ={{symbol}}</p>
<p>Shares to be purchased = {{shares}}</p>
<p>Total Transaction Cost {{total_price | usd}}</p>
<p>Current Cash = {{cash_remaining | usd}}</p>
<p>Balance after transaction = {{balance |usd}}</p>
<button class="btn btn-primary" type="submit">Buy</button>
</form>
{% endblock %}发布于 2020-08-11 16:17:15
在confirmation.html中没有与表单一起提交的值。一些备选方案:
hidden input controls中,以便将数据传回服务器确认路径不会(尝试)从表单中获取任何值(例如request.form.get)。
https://stackoverflow.com/questions/63361078
复制相似问题