【问题标题】:rendering multiple lists to the django template将多个列表渲染到 django 模板
【发布时间】:2014-03-11 08:50:00
【问题描述】:

我在 views.py 中有以下代码,它将两个列表的压缩字典返回到模板 ex.html:

    list1=["['a',1,2,3]","['b',4,5,6]","['c',7,8,9]"]
    list2=["[12-09-13,pass]","[8-05-12,fail]"]
retrun render_to_response(ex.html,dict(t=zip(list1,list2)))

但它不起作用。zip 混合了两个列表。有什么解决方案可以在模板中单独遍历两个列表。

在模板中我使用 t 里面的 for 循环

{% for li in t %}
    {{li}}
{% endfor %}

java脚本代码.....生成图形:

<script type="text/javascript">
  google.load('visualization', '1', {packages: ['corechart','table']});
  function drawVisualization() {
    // Some raw data (not necessarily accurate)
    var data = google.visualization.arrayToDataTable([
         ['Job-Names', 'Total', 'Pass', 'Fail'],
             {{glist|safe}}
    ]);

    var options = {
          title : 'Project Details',
          vAxis: {title: "Number of BULDS" ,ticks : [2,4,6,8,10] },
          hAxis: {title: "Job-Names" , textPosition : "out" , slantedText : "false" , textStyle : {fontSize : 9}},
          is3D: true,
          colors : ["#194D86","#33FF66", "#FF3333"],
          pointSize: 4

    };

    var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
    chart.draw(data, options);

    var table = new google.visualization.Table(document.getElementById('table_div'));
    table.draw(data, {showRowNumber: false});
 }

我正在使用上述两个列表的数据来生成图形...我以字符串格式发送此数据...当我以 dict(t=(',').join( list1)) 它将生成一个图表..但是如果我发送两个列表..什么都没有发生..或者我可能不知道它的解决方案

【问题讨论】:

  • 不要压缩。您可以单独遍历列表。
  • 无法渲染超过 1 个字典...
  • 我正在使用这些列表生成两个不同的图表(柱形和线形)......忘了提......

标签: python django django-templates


【解决方案1】:

在模板中分别遍历两个列表

extra_context = {}
extra_context['list1'] = ["['a',1,2,3]","['b',4,5,6]","['c',7,8,9]"]
extra_context['list2'] = ["[12-09-13,pass]","[8-05-12,fail]"]
return render_to_response(ex.html,extra_context)

在你的模板中:

{% for li in list1 %}
    {{li}}
{% endfor %}

{% for li in list2 %}
    {{li}}
{% endfor %}

【讨论】:

  • 使用它我可以访问每个元素,但是当我使用该逻辑将数据发送到谷歌图表以生成柱形图时,它不起作用....
  • 使用 ' 。比如'{{li}}'。因为我猜你正在使用 javascript library 。对于输入数据,您将需要 json 或 string 类型。
  • 我正在使用上述两个列表的数据来生成图形...我以字符串格式发送此数据...当我以 dict(t=(', ').join(list1)) 它将生成一个图表..但是如果我发送两个列表..什么都没有发生..或者我可能不知道它的解决方案...
  • 是的。我明白了 。您可以将您的 javascript 代码粘贴到您的问题中以生成图表吗...
  • 您将来自字典的数据放在 javascript 代码中的什么位置?
【解决方案2】:

您可以使用dot operator 访问不同的列表:

{% for li in t.0 %} // t.0 would be list1
{{li}}
{% endfor %}
{% for li in t.1 %} // t.1 would be list2
{{li}}
{% endfor %}

【讨论】:

    猜你喜欢
    • 2012-01-08
    • 2018-05-20
    • 2013-10-10
    • 1970-01-01
    • 2022-07-22
    • 2011-03-14
    • 2018-11-05
    • 2010-12-09
    • 2015-10-29
    相关资源
    最近更新 更多