Как отобразить, что корзина пуста — Flask

#python #flask #cart #webshop

#python #flask #Корзина #интернет-магазин

Вопрос:

Я создаю интернет-магазин с использованием Flask. На данный момент я пытаюсь отобразить сообщение, когда корзина пуста. Мне уже удалось отобразить сообщение, когда количество товара, равное 0, добавляется в корзину, используя if-тест. Но я не могу отобразить сообщение, когда в корзину не добавляется количество товара (жирный фрагмент кода (между *) — это место, где появляется сообщение об ошибке)).

Это моя функция маршрута в Python:

 @app.route('/cart', methods=['GET', 'POST'])
def cart():
    product_id = session['product_id']
    product = my_products[product_id]
    totalprice = int(session['amount']) * product['price']
    return render_template('cart.html', product=product, totalprice=totalprice)
 

Это мой html-файл корзины (cart.html ):

 {% if session['amount'] == '0' or **product_id == None** %}

<p>You have no products in your cart.</p>

<div id="place_order">
    <button id='btnalert' disabled>place order</button>
</div>

{% else %}

<p>You have in your cart:</p>
<p>Product: {{product['name']}}</p>
<p>Price: {{product['price']}}</p>
<p>Amount: {{session['amount']}}</p>

<p id="totalprice">TOTAL PRICE: {{totalprice}}</p>

<div id="place_order">
<button id='btnalert'>place order</button>

<script>
    btnAlert = document.querySelector('#btnalert')

    function showAlert() {
        alert('Sorry, this shop is out of business!')
    }

    btnAlert.addEventListener("click", showAlert)
</script>
</div>

{% endif %}
 

Заранее благодарю вас!

Комментарии:

1. Не могли бы вы поделиться тем, что говорится в сообщении об ошибке?

2. Он просто выдает внутреннюю ошибку сервера 500, в которой говорится: «Сервер обнаружил внутреннюю ошибку и не смог выполнить ваш запрос. Либо сервер перегружен, либо в приложении ошибка. » Когда я смотрю в терминал, он говорит «KeyError: ‘product_id'»

Ответ №1:

Что, если вы также передадите product_id в качестве переменной.

попробуйте это :

вернуть render_template(‘cart.html ‘, product=product, product_id=product_id , totalprice=totalprice)

и измените эту строку:

{%, если session[‘amount’] == ‘0’ или {{product_id}} == Нет %}

Комментарии:

1. Спасибо за предложение! К сожалению, я все еще получаю ту же ошибку :/

2. разве None не должен быть str (‘None’) ?