我有三个联系人要显示在我的页面上,而不是写三次联系
div div div object.first /div /div /div
div div div object.second /div /div /div
div div div object.last /div /div /div
我更喜欢做
之类的事情contacts = ['first', 'second', 'third']
在python视图中
{% for field in contacts_fiels %}
div div div {{ object.field }} /div /div /div
{% endfor %}
有什么想法吗?
编辑:
我有类似的东西:
(view.py)
object.first = 'user1'
object.second = 'user2'
object.third = 'user3'
contacts_fields = ['first', 'second', 'third']
然后jinja循环到具有在contacts_fields中注册的字段的对象,以便
div div div user1 /div /div /div
div div div user2 /div /div /div
div div div user3 /div /div /div
答案 0 :(得分:2)
您必须从视图中将名为contacts的列表作为上下文对象传递。这完成如下。
views.py
return render(request, 'views/index.html', context={"values":[1,2,3,4]})
的index.html
{% for val in values %}
<div>
<div>
<div>Val is {{ val }}</div>
</div>
</div>
{% endfor %}
如需进一步阅读,请参阅official documentation。
答案 1 :(得分:1)
这是一个非常简单的示例视图,它使用返回的渲染中的上下文字典参数将联系人列表发送到模板
def myView(request):
contacts = ["A", "B", "C"]
return render(request, "myTemplate.html", {"contacts": contacts}
现在在模板中,您可以添加类似的内容以显示contacts
列表中的字符串:
{% for c in contacts %}
<div>c</div>
{% endfor %}
现在,如果您的contacts
基于django对象,则可以使用Contact.objects.all()
替换您的列表(或者您正在过滤它)。所以你最终会得到类似的东西:
def myView(request):
contacts = Contact.objects.all()
return render(request, "myTemplate.html", {"contacts": contacts}
执行此操作后,您可以将模板中Contact对象的不同字段值显示为表格,如下所示:
<table class="table">
<thead>
<tr>
<th>Field Name A</th>
<th>Field Name B</th>
<th>Field Name C</th>
</tr>
</thead>
<tbody>
{% for c in contacts %}
<tr>
<td>c.fieldA</td>
<td>c.fieldB</td>
<td>c.fieldD</td>
</tr>
{% endfor %}
</tbody>
</table>