CS50财务-指数未正确显示投资组合



我在获取代码以在index.html中正确显示投资组合时遇到问题。

我使用这个函数的逻辑是获得一个用户拥有的所有股票和现金的列表,然后在"for"循环中,查找每只股票的公司名称和当前价格,以及总价值,然后将所有信息插入一个新的字典列表(display_portfolio(。然后render_template应该显示包含这些信息的"display_portfolio",以及用户的总现金和所有东西的总价值。然而,在我目前的设置中,它显示的是总现金和总金额,但没有显示个股的金额。我真的不确定为什么会这样,我也不确定问题是在我的html中还是在flask函数本身中。

这就是功能:

@app.route("/")
@login_required
def index():
"""Show portfolio of stocks"""
# Retrive portfolio
portfolio = db.execute("SELECT symbol, SUM(amount) as amount FROM purchases WHERE id = ? ORDER BY symbol", (session["user_id"]))
user_cash = db.execute("SELECT cash FROM users WHERE id = ?", session["user_id"])
cash = user_cash[0]["cash"]
display_portfolio = []
shares_total = 0
# loop through portfolio symbols to access name and share price for each symbol
for row in portfolio:
requested_quote = lookup(row["symbol"])
symbol = row["symbol"]
amount = row["amount"]  #shares
price = float(requested_quote["price"])
name = requested_quote["name"]
share_total = (float(amount) * price)
shares_total = shares_total + share_total
display_portfolio.append({'symbol':symbol, 'name':name, 'shares':amount, 'price':price, 'share_total':share_total})
grand_total = shares_total + cash
return render_template("index.html", display_portfolio = display_portfolio, cash = cash, grand_total = grand_total)

这是index.html:

{% extends "layout.html" %}
{% block title %}
Portfolio
{% endblock %}
{% block main %}
<div>
<table class="table table-striped">
<thead>
<tr>
<th>Symbol</th>
<th>Name</th>
<th>Shares</th>
<th>Price</th>
<th>TOTAL</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="3"></td>
<td>TOTAL</td>
<td>{{ grand_total | usd }}</td>
</tr>
</tfoot>
<tbody>
{% for row in display_portfolio %}
<tr>
<td>{{ display_portfolio.symbol }}</td>
<td>{{ display_portfolio.name }}</td>
<td>{{ display_portfolio.shares }}</td>
<td>{{ display_portfolio.price }}</td>
<td>{{ display_portfolio.total }}</td>
</tr>
{% endfor %}
<td colspan="3"></td>
<td>Cash</td>
<td>{{ cash | usd }}</td>
</tbody>
</table>
</div>
{% endblock %}

我还应该注意,当我在"display_portfolio.price"中添加"|usd"时,它的内容是:

<td>{{ display_portfolio.price | usd }}</td>

我也遇到了一个完全不同的错误,不确定为什么它能用现金而不是这个。

我可以确认在"投资组合"变量正在检索的sql数据库中存在购买。

这就是它的样子:

显示

任何帮助都将不胜感激,谢谢!

来自tfoot上的MDN文档:

允许的父级:<table>元素。<tfoot>必须出现在任何<caption><colgroup><thead><tbody><tr>元素。笔记这是HTML5的要求。

怀疑显示的现金行缺少<tr>标记。

W3C的Nu HTML验证器是您的朋友:(

最新更新