CS50 Finance - индекс неправильно отображает портфолио - PullRequest
0 голосов
/ 30 апреля 2020

У меня возникли проблемы с получением кода для правильного отображения портфеля в индексе. 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 существует переменная «портфолио», в которой есть покупки

Вот как это выглядит:

Дисплей

Любая помощь будет оценена, спасибо!

1 Ответ

0 голосов
/ 30 апреля 2020

С MDN до c в tfoot :

Разрешенные родители: элемент <table>. Знак <tfoot> должен появляться после любого элемента <caption>, <colgroup>, <thead>, <tbody> или <tr>. Обратите внимание, что это требование по состоянию на HTML5.

Подозреваю, что отображается строка Ca sh, поскольку в ней отсутствуют теги <tr>.

Nu HTML Validator из W3 C - это твой друг:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...