【问题标题】:Django template html variable inside a variable变量内的Django模板html变量
【发布时间】:2021-11-09 16:36:54
【问题描述】:

在我看来,我创建了一个在上下文中传递的变量,看起来像这样

{13: {112: 33.333333333333336, 120: 66.66666666666667, 125: 66.66666666666667}, 14: {110: 20.0, 111: 20.0, 113: 20.0, 121: 40.0, 126: 40.0}}

在我的模板中,我在问题的循环中,并希望将此值分配给问题内的答案:

{% for question in questions %}
    <div class="ui basic padded segment left aligned">
        <h4 class="ui header">
            Question {{ forloop.counter }} / {{ questions|length }}: {{ question.prompt }}
        </h4>
        <ul>
            {% for option in question.answer_set.all %}
            <li> {{ forloop.counter }}) {{option.text}}: 
                 {{ ans.{{ question.pk }}.{{ option.pk }} }} %.
                
                {{ ans.13.120 }} 
            </li>
            {% endfor %}
        </ul>
    </div>
    {% endfor %}

如果我使用 {{ ans.13.120 }} 它可以工作,但不是动态的......我想要一种在 {{ }} 中使用变量的方法......类似于:{{ ans.(question. pk).(option.pk) }}...

有可能吗?

【问题讨论】:

  • 您能否展示您的模型以及您的视图中如何定义ans?
  • 不,Django 故意使这变得困难,试图分离逻辑层和表示层(这样的逻辑应该是 view 的一部分)。需要这样做意味着您的视图没有以正确的格式将数据传递给您的模板。
  • @IainShelvington,ans,基本上是我在顶部显示的dict的dict。
  • @Jan 并且该字典是手动定义的?如果你从一些查询中生成它,你应该能够将它与 answer_set 结合起来
  • @IainShelvington,是的,这是我的第一种方法,但由于某种原因,这个论点没有通过......所以我必须找到一个解决方法......我什至在分开的时候问过这个问题在这里:stackoverflow.com/questions/69891569/…

标签: django templates django-queryset


【解决方案1】:

如果您想在模板级别执行此操作,您可以为其制作自定义标签并传递字典和键,然后您将获得值

【讨论】:

  • 我设法分别用 question.pk 和 option.text 的值和参数做了一个 custom_tag,它成功了!谢谢
【解决方案2】:

您应该在视图中完成这项工作。避免在模板中编写逻辑。

【讨论】:

    猜你喜欢
    • 2016-04-22
    • 2016-01-12
    • 2012-07-04
    • 2017-10-01
    • 2013-08-13
    • 2012-12-11
    • 1970-01-01
    • 2021-03-14
    • 2015-06-19
    相关资源
    最近更新 更多