【问题标题】:Accessing session variable based on variable in for loop django template基于for循环django模板中的变量访问会话变量
【发布时间】:2022-01-11 21:31:12
【问题描述】:

我列出了一些可以放在购物车中的产品,该购物车存储在会话变量字典中,其中键是产品 ID,值是有关数量和物品的一些信息。我想添加选项以查看(在产品页面上)您的购物车中有多少该产品。

我知道我可以像这样在 django 模板中访问会话变量:

{{ request.session.cart.2323.quantity }}

问题是,键(在本例中为 2323)是一个依赖于 for 循环的变量:

{% for prod in products %}
  <p>{{ request.session.cart[prod.name].quantity }}</p>
{% endfor %}

但不幸的是,这样实现它是不可能的。有什么方法可以做到这一点,或者我必须改变我的购物车的工作方式吗?

【问题讨论】:

    标签: python python-3.x django django-templates session-variables


    【解决方案1】:

    您应该实现一个自定义模板过滤器,例如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 %}
    

    【讨论】:

    • 非常感谢,最后我没有使用getattr,而是使用了your object[first_property][second_property],第一个不起作用。
    猜你喜欢
    • 2011-02-02
    • 2016-11-03
    • 2012-12-06
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    相关资源
    最近更新 更多