发送多个词典变量作为模板中的一个

时间:2019-03-03 14:46:23

标签: django django-models

我在多个字典变量中都有一个数据集,我想将其作为模板传递

servera = {'svr': ServerA, 'tc': 10, 'bs': 100, 'bf': 0, 'te': 0, 'per': '0.00'}
serverb = {'svr': ServerB: 'tc': 20, 'bs': 20,  'bf': 0, 'te': 0, 'per': '0.00'}

。 .. 。 等等大约14个这样的

我想按如下所示将它们传递给模板

def function(request)

#process data using code

return render(request,'output.html'{servera:servera,serverb:serverb,serverc:serverc,.......}

虽然可行,但在添加字典变量时会增加工作量,需要将其添加到return语句中。

我该如何实现

somevariable = <all dictionary variabled clubbed>


def function(request)

#process data using code

return render(request,'output.html'{somevariabe:somevariable}

然后如何在模板中访问

类似

{% for name in somevariable.list.all %}

{% for servername in name.list.all %}

{{ servername.tc }}

{% endfor %}
{% endfor %}

任何帮助将不胜感激

编辑:

以下是我正在尝试的模板文件

{% for k in server_stats.all %}

                <tr>
                    <td><p class="small">{{ forloop.counter  }}</p></td>
                    <td><p class="small">{{ k.svr }}</p></td>
                    <td><p class="small">{{ k.te }}</p></td>
                    <td><p class="small">{{ k.bs    }}</p></td>
                    <td><p class="small">{{ k.bf }}</p></td>
                </tr>
{% endfor %}

“我的视图”文件片段

.
.
..
    elif request.method =='POST' and 'weekly_report' in request.POST :
            generate_backup_report("Weekly")
            report_type ="Weekly"
            rc= {'report_type': report_type}
            for m in mserver_list:
                answer = (getbackup_stats(m))
                print(answer)
                server_stats.append(answer)
                print('Getting Stats for ',m)
            print('These are Server Stats',server_stats)
            return render(request,'viewreport.html',{'mserver_list':mserver_list,'server_stats':server_stats,'tstats':tstats})

Debug Toolbaar显示变量已成功转移到模板,但是无法从中获取值。

'server_stats': [{'bf': 0,
                   'bs': 0,
                   'per': '0.00',
                   'svr': <masterserver: ServerA>,
                   'tc': 0,
                   'te': 0},
                  {'bf': 1,
                   'bs': 4,
                   'per': '-100.00',
                   'svr': <masterserver: Challenger>,
                   'tc': 5,
                   'te': 5},
                  {'bf': 1,
                   'bs': 18,
                   'per': '-100.00',
                   'svr': <masterserver: Serverb>,
                   'tc': 21,
                   'te': 19},
                  {'bf': 0,
                   'bs': 0,
                   'per': '0.00',
                   'svr': <masterserver: ServerC>,
                   'tc': 0,
                   'te': 0},
                  {'bf': 12,
                   'bs': 0,
                   'per': '-1200.00',
                   'svr': <masterserver: ServerD>,
                   'tc': 21,
                   'te': 12},
                  {'bf': 1,
                   'bs': 29,
                   'per': '-100.00',
                   'svr': <masterserver: ServerE>,
                   'tc': 31,
                   'te': 30},
                  {'bf': 30,
                   'bs': 0,
                   'per': '-3000.00',
                   'svr': <masterserver: ServerF>,
                   'tc': 32,
                   'te': 30},
                  {'bf': 0,
                   'bs': 0,
                   'per': '0.00',
                   'svr': <masterserver: ServerG>,
                   'tc': 0,
                   'te': 0},
                  {'bf': 1,
                   'bs': 27,
                   'per': '-100.00',
],

1 个答案:

答案 0 :(得分:1)

列出服务器词典列表,并将其发送到模板,然后在模板中进行迭代。就像上下文中的server_lsit = [servera, serverb, .....]一样,将它们发送为''outpt.html, {'servers': server_list}

您可以在html模板中进行迭代, {% for serv in servers %} {{ serv.svr }}{{ serv.tc }} ... {% endfor %}

每次循环运行时,它都在每台服务器上,您可以在其中访问数据。这只是一种方法,也许还有更好的方法。