Товар не отображается в корзине - PullRequest
0 голосов
/ 22 февраля 2019

Поэтому я пытаюсь отобразить добавленный товар в корзину, но ничего не отображается.

@phones.route("/cartt")
def shopping_cart():
total_price = 0
if "cart" not in session:
    flash("There is nothing in your cart.")
    return render_template("phones/cart.html", display_cart = {}, total = 0)
else:
    items = [j for i in session["cart"] for j in i]
    dict_of_phones = {}
    phone_by_id = None

    for item in items:
        phone = get_phone_by_id(item)
        print(phone.id)
        total_price += phone.price
        dict_of_phones = phone
    return render_template('phones/cart.html', display_cart = dict_of_phones, total = total_price)

html:

   {% for phone in dict_of_phones %}
    <tr>
        <td>{{phone.model}}</td>
        <td>{{phone.year}}</td>
        <td>${{ "%.2f" % phone.price}}</td>
        <td>${{ "%.2f" % phone.price}}</td></tr>    
{% endfor %}

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Я бы передал список телефонов в ваш шаблон , в отличие от словаря телефонов.Кроме того, для dict_of_phones установлено только последнее значение ваших телефонных пунктов , поскольку вы каждый раз переопределяете его значение с помощью dict_of_phones = phone.Таким образом, dict_of_phones на самом деле является просто отдельным элементом телефона, данным последним элементом в элементах : phone = get_phone_by_id(item).Может быть, вы могли бы изменить свой код для создания списка телефонов?Затем передайте этот список в шаблон jinja2, что-то вроде:

@phones.route("/cartt")
def shopping_cart():
total_price = 0
if "cart" not in session:
    flash("There is nothing in your cart.")
    return render_template("phones/cart.html", display_cart = {}, total = 0)
else:
    # Assuming items is correct, looks off
    items = [j for i in session["cart"] for j in i]
    phones = []

    for item in items:
        phone = get_phone_by_id(item)
        print(phone.id)
        # assuming phone has id,model,year, and price attributes
        phones.append[phone]
        # note total_price of your cart not currently being used in your template
        total_price += phone.price
    return render_template('phones/cart.html', display_cart=phones, total = total_price)

Затем в вашем шаблоне вы можете сделать что-то вроде:

{% for phone in display_cart %}
    <tr>
        <td>{{phone.model}}</td>
        <td>{{phone.year}}</td>
        <td>${{ "%.2f" % phone.price}}</td>
        <td>${{ "%.2f" % phone.price}}</td>
    </tr>    
{% endfor %}

Надеюсь, чтопомогает!

0 голосов
/ 22 февраля 2019

Вы используете неправильное имя переменной в своем шаблоне.Это должно быть display_cart вместо dict_of_phones.Смотрите ниже:

{% for phone in display_cart %}
    <tr>
        <td>{{phone.model}}</td>
        <td>{{phone.year}}</td>
        <td>${{ "%.2f" % phone.price}}</td>
        <td>${{ "%.2f" % phone.price}}</td>
    </tr>    
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...