У меня возникли проблемы с получением кода для правильного отображения портфеля в индексе. html.
Моя логика c с помощью этой функции - получить список всех акций и около sh один пользователь, а затем в «для» l oop, ищет название компании и текущую цену для каждой акции, общую стоимость, а затем вставляет всю эту информацию в новый список словарей (display_portfolio). Затем render_template должен отобразить «display_portfolio» с этой информацией, а также с общим значением пользователя sh и общей стоимостью всего. Однако, с моей текущей настройкой, он отображает общую сумму около sh и общую сумму, но ничего из отдельных акций. Я действительно не уверен, почему это так, и я не уверен, что проблема в моей 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)
Это индекс. 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 %}
Я также должен отметить, что когда я добавляю «| usd» к «display_portfolio.price», в нем говорится:
<td>{{ display_portfolio.price | usd }}</td>
Я также получаю совершенно отдельную ошибку, и не уверен, почему она будет работать с CA sh, а не с этим.
Я могу подтвердить, что в базе данных sql существует переменная «портфолио», в которой есть покупки
Вот как это выглядит:
Дисплей
Любая помощь будет оценена, спасибо!