Доступ к переменной сессии на основе переменной в цикле for шаблона django
У меня есть несколько продуктов, которые могут быть в корзине, эта корзина хранится в словаре переменной сессии, для которой ключом является id продукта, а значением - некоторая информация о количестве и прочее. Я хочу добавить возможность просматривать (на странице продуктов), сколько продуктов находится в вашей корзине.
Я знаю, что могу получить доступ к переменным сессии в шаблоне django следующим образом:
{{ request.session.cart.2323.quantity }}
Проблема в том, что ключ (2323 в данном случае) является переменной, которая зависит от цикла for
:
{% for prod in products %}
<p>{{ request.session.cart[prod.name].quantity }}</p>
{% endfor %}
Но реализовать это таким образом, к сожалению, невозможно. Есть ли способ, с помощью которого это возможно, или мне придется изменить способ работы моей корзины?
Вам следует реализовать пользовательский фильтр шаблона, например this, чтобы иметь возможность использовать getattr.
from django import template
register = template.Library()
@register.simple_tag
def get_object_property_dinamically(your_object, first_property, second_property):
return getattr(getattr(your_object, first_property), second_property)
{% load get_object_property_dinamically %}
{% for prod in products %}
<p>{% multiple_args_tag request.session.cart prod.name 'quantity' %}</p>
{% endfor %}