这是我的模型的样子:
我正在尝试填写一个装满磁盘的表,每个磁盘都有一个序列号和型号。我将假设我会做{%for disk in“something”%},但我不确定那是什么东西。
这就是我所希望的:
<table>
<thead>
<tr>
<th>Serial Number</th>
<th>Model Number</th>
</tr>
</thead>
<tbody>
{% for disks in "something" %}
<tr>
<td>{{ disk.serial }}</td>
<td>{{ disk.model }}</td>
</tr>
{% endfor %}
答案 0 :(得分:4)
模板只是问题的一部分。它实际上是不太复杂的方面,因为你所做的只是传递一个上下文(字典)供它访问。模板之前的步骤是组织数据的视图。让我们从那开始......
查看强>
收集数据的函数(视图)需要构建包含“磁盘”对象的上下文,这可能是数据库模型查询的结果。为简单起见,我们只想说你这样做了:
disks = Disk.objects.all()
使用磁盘查询集,您现在可以在上下文中将其传递给模板。
context = {"disks": disks}
return render_to_response('my_template.html', context)
现在将上下文传递给您的模板。
<强>模板强>
只需参考上下文中的对象:
{% for disk in disks %}
<tr>
<td>{{ disk.serial }}</td>
<td>{{ disk.model }}</td>
</tr>
{% endfor %}
答案 1 :(得分:1)
@jdi是对的,但由于这是Web开发中非常常见的事情,因此有一个generic view for it。
在urls.py
:
from django.conf.urls import patterns, url, include
from django.views.generic import ListView
from myapp.models import Disk
urlpatterns = patterns('',
(r'^disk_list/$', ListView.as_view(
model=Disk,
template_name='disk_list.html'
)),
)
创建一个名为disk_list.html
的文件,即TEMPLATE_DIRS
中列出的任何目录,并在其中添加:
<table>
<thead>
<tr>
<th>Serial Number</th>
<th>Model Number</th>
</tr>
</thead>
<tbody>
{% for disk in object_list %}
<tr>
<td>{{ disk.serial }}</td>
<td>{{ disk.model }}</td>
</tr>
{% endfor %}
最后,导航至http://localhost:8000/disk_list/