首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CS50财务写入数据库问题

CS50财务写入数据库问题
EN

Stack Overflow用户
提问于 2020-08-11 15:07:54
回答 1查看 254关注 0票数 0

我在CS50财务方面有另一个问题,我真的很想得到一些帮助。

所以我正在研究购买部分,我实现了一个额外的步骤,你输入你想要的股票,你想要多少股票,然后它会带你到一个新的html页面来确认你想购买股票。这一页告诉你要买多少股,花多少钱,买完股票后你的现金余额是多少。

我的问题是,当我在确认页面上实际购买股票时,我会发现一些错误,这些错误说我的变量(特别是平衡,股票和price_per_share)是没有定义的,我不知道为什么。我将在下面附上我的代码的相关部分。再次感谢。

Application.PY:

代码语言:javascript
复制
@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代码,以备需要时使用:

代码语言:javascript
复制
{% 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:

代码语言:javascript
复制
{% 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 %}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-11 16:17:15

confirmation.html中没有与表单一起提交的值。一些备选方案:

  • 将数据添加到会话数组
  • create hidden input controls中,以便将数据传回服务器
  • ,给按钮元素一个名称,并将确认值的json编码字符串作为其值。

确认路径不会(尝试)从表单中获取任何值(例如request.form.get)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63361078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档