在Django中渲染字典列表

时间:2018-11-20 03:39:05

标签: python django django-models django-templates

在我的django项目中我有以下模型(这些对象基本上是词典列表):

  def bill_sum(request):      
     titles = Summary.objects.values('title')
     summary = Summary.objects.values('summary')
     summary_text = Summary.objects.values('summary_text')
     action_date = Summary.objects.values('action_date')
     action_desc = Summary.objects.values('action_desc')
     context = {'title':titles,
  'summary':summary,
  'summary_text':summary_text,
  'action_date': action_date,
  'action_desc':action_desc,
}
      return render(request,'billsummary.html',context)

在我的模板中,我可以通过以下html代码生成标题列表:

    <!doctype html>
<html>
   <body>
    {% for t in title %}
        <h1>{{t.title}}</h1>

    {% endfor %}


  </body>
</html>

但是,当我尝试添加其他信息(例如,所有摘要对象的循环)时,除了标题之外,没有任何其他东西呈现。我缺少什么?如何从中呈现字典列表(即Json数据文件)我对模板的看法?

我想要做的是类似于模板中的以下内容:

    {% for c in context %}
<h1>c.title</h1>>

<h2>c.summary</h2>
<p>c.action_date</p>
{% endfor %}

1 个答案:

答案 0 :(得分:1)

您可以这样做:

summaries = Summary.objects.values('title', 'summary', 'summary_text', 'action_date', 'action_desc')

return render(request,'billsummary.html',context={'summaries': summaries})

然后在模板中:

{% for t in summaries %}
    <h1>{{t.title}}</h1>
    <p>{{t.summary}}</p>

{% endfor %}

它只会访问数据库一次,非常适合您的情况