为了账号安全,请及时绑定邮箱和手机立即绑定

从 django 渲染在 html 中显示字典

从 django 渲染在 html 中显示字典

幕布斯7119047 2021-09-24 16:01:11
我正在尝试将一些数据(从 django 视图作为字典输出)显示到 html 可折叠 div(来自 bootstrap3)中。例如,我将对象“数据”放入具有以下结构的模板中:group value-----------A      1A      2A      3B      1B      2我知道我可以轻松地遍历对象。例如{% for i in data %}{{i.group}}但是,我想要做的是能够将“组”用作可折叠内的父项,将项目用作“值”。就像是{% for i in data %}<div class="panel-group">    <div class="panel panel-default">        <div class="panel-heading">            <h4 class="panel-title">            <a data-toggle="collapse" href="#{{ i.group }}">{{ i.group }}</a>            </h4>            </div>            <div id="{{ i.group }}" class="panel-collapse collapse">                <ul class="list-group" style="margin-left:30px">                <div class="row">                    <li class="list-group-item">{{ i.value }}</li>                </div>                </ul>            </div>        </div>    </div> {% endfor %}</div>正如您所看到的问题是,如果我按照上述方式进行操作,它将为非唯一的“组”值创建多个父类别。
查看完整描述

2 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

首先,我们在将数据发送到模板之前按组对数据进行分组:


from itertools import groupby

grouped = groupby(data, key=lambda _: _.group)

然后我们稍微修改模板以迭代组和值:


{% for group, values in grouped %}

<div class="panel-group">

    <div class="panel panel-default">

        <div class="panel-heading">

            <h4 class="panel-title">

            <a data-toggle="collapse" href="#{{ group }}">{{ group }}</a>

            </h4>

            </div>

            <div id="{{ group }}" class="panel-collapse collapse">

                <ul class="list-group" style="margin-left:30px">

                {% for i in values %}

                    <div class="row">

                        <li class="list-group-item">{{ i.value }}</li>

                    </div>

                {% endfor %}

                </ul>

            </div>

        </div>

    </div> 

{% endfor %}

</div>

在每次迭代中, group 将是不同的, values 是一个迭代器,原始数据对应于每个不同的 group。


这将为每个组创建单个标签,并为每个组内的每个值创建单独的条目。


查看完整回答
反对 回复 2021-09-24
  • 2 回答
  • 0 关注
  • 315 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信