尝试在表中生成行

时间:2012-04-29 15:18:20

标签: django django-templates

这是我的模型的样子:

http://i.imgur.com/fFBqq.png

我正在尝试填写一个装满磁盘的表,每个磁盘都有一个序列号和型号。我将假设我会做{%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 %}

2 个答案:

答案 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/