Django получает данные в моем шаблоне из вложенного словаря (сеанса)

как мне получить другие элементы из моего сеанса в django и передать сеанс как словарь в моей cart_page.html

мой сеанс:

{'3': {'quantity': 1, 'price': 4.0, 'totalitem': '4.00'}, '1': {'quantity': 1, 'price': 30.0, 'totalitem': '30.00'}}

вид.py:

   return render(request, 'cart/cart_page.html', {'itens': itens})

но когда я сделаю:

{% for item in itens %}

{{item}}
{% endfor %}

в моем {{item}} есть только 3 и 1, как я могу получить внутри него количество и цену?

🤔 А знаете ли вы, что...
В Python есть инструменты для тестирования кода, такие как библиотека unittest.


1
125
1

Ответ:

Решено

Здесь используется цикл, на каждой итерации нужное значение берется из вложенного словаря from value и проверяется на наличие с помощью:

{% if value.quantity or value.price %}

шаблоны (cart_page.html)

<!DOCTYPE html>
<html lang = "en">
<head>
    <meta charset = "utf-8"/>
</head>

<body>

{% for key, value in itens.items %}
    {% if value.quantity or value.price %}
    {{ 'key ='}} {{ key }}<br>
    {{ 'quantity ='}} {{ value.quantity }}<br>
    {{ 'price ='}} {{ value.price }}<br>
    {% endif %}
{% endfor %}
</body>
</html>

urls.py

urlpatterns = [
 path('city/', city),
]

просмотры.py

def city(request):
    itens = {'3': {'quantity': 1, 'price': 4.0, 'totalitem': '4.00'}, '1': {'quantity': 1, 'price': 30.0, 'totalitem': '30.00'}}
    return render(request, "cart/cart_page.html", {"itens": itens})

Вывод

key = 3
quantity = 1
price = 4.0
key = 1
quantity = 1
price = 30.0

в качестве альтернативы вы можете прочитать значения из вложенного словаря без цикла, как показано ниже:

<!DOCTYPE html>
<html lang = "en">
<head>
    <meta charset = "utf-8"/>
</head>

<body>
{{'3 key'}} {{'quantity ='}} {{itens.3.quantity}}   {{'price ='}} {{itens.3.price}}<br>
{{'1 key'}} {{'quantity ='}} {{itens.1.quantity}}   {{'price ='}} {{itens.1.price}}<br>
</body>
</html>