在模板中进行计算,并使用值作为上下文传递来显示内容

时间:2019-04-20 23:37:15

标签: python django django-templates django-views

我无法使用通过我的视图传递的上下文显示一些div。在我的views.py中,我传递了一个值“ total_used”和“ total”。

views.py:

def home(request):
    context = {
        "reward": [
            {
                "total": 5,
                "total_used": 2
            }
        ]
    }
    return render(request, "web/index.html", context)

模板:

  {% with ''|center:reward.total_used as range %}
  {% for _ in range %}
      <div class="red"></div>
  {% endfor %}
  {% endwith %}

  <div class="blue"></div>

  <div id="reward-count">
      <h5>{{ reward.total_used }}/{{ reward.total }}</h5>
  </div>

因此,例如,我想要2个div类别为红色,而3个div(reward.total- reward.total_used)则为蓝色类别。

我已经尝试过了,但是没有用:

  {% with ''|center:reward.total_used as range %}
  {% for _ in range %}
      <div class="red"></div>
  {% endfor %}
  {% endwith %}

    {% with ''|center:reward.total-reward.total_used as range %}
  {% for _ in range %}
      <div class="blue"></div>
  {% endfor %}
  {% endwith %}

  <div id="reward-count">
      <h5>{{ reward.total_used }}/{{ reward.total }}</h5>
  </div>

2 个答案:

答案 0 :(得分:0)

[]定义中删除方括号context。您的views.py应该如下所示:

def home(request):
    context = {
        "reward": {"total": 5, "total_used": 2}        
    }
    return render(request, "web/index.html", context)

答案 1 :(得分:0)

我最终在视图中计算了total-total_used,然后将其添加到上下文中:

views.py:

def home(request):
    context = {
        "rewards": [
            {
                "total": 5,
                "total_used": 2
            },
            {
                "total": 7,
                "total_used": 1        
            }
        ]
    }

    for  reward in context['rewards']:
        reward['total_not_used'] = reward['total'] - reward['total_used']

    return render(request, "web/index.html", context)

模板:

{% with ''|center:reward.total_used as range %}
{% for _ in range %}
<div class="reward reward-shaded"></div>
{% endfor %}
{% endwith %}

{% with ''|center:reward.total_not_used as range %}
{% for _ in range %}
<div class="reward"></div>
{% endfor %}
{% endwith %}

<div id="reward-count">
    <h5>{{ reward.total_used }}/{{ reward.total }}</h5>
</div>