如何将Python数据添加到HTML表中

如何将Python数据添加到HTML表中,python,html,django,data-structures,html-table,Python,Html,Django,Data Structures,Html Table,我需要以下HTML格式的表格: 我的问题是,我应该如何正确地组织Python数据,以便以一种干净的Python方式实现下表格式。所有图像都属于特定的版本,因此图像在正确的列中很重要(顺序很重要)。有些版本没有所有(或任何)图像,所以在这种情况下,我将检查“image==None”并显示“?”等,而不是图像。因此,“空”插槽也应保存到数据中 注意:我用Django来做这件事,我使用Django模板来呈现它。理想情况下,我可以在模板中执行以下操作: <table> <thea

我需要以下HTML格式的表格:

我的问题是,我应该如何正确地组织Python数据,以便以一种干净的Python方式实现下表格式。所有图像都属于特定的版本,因此图像在正确的列中很重要(顺序很重要)。有些版本没有所有(或任何)图像,所以在这种情况下,我将检查“image==None”并显示“?”等,而不是图像。因此,“空”插槽也应保存到数据中

注意:我用Django来做这件事,我使用Django模板来呈现它。理想情况下,我可以在模板中执行以下操作:

<table>
  <thead>
    <tr>
      {% for version in data.versions %}
      <th>{{ version }}</th>
      {% endfor %}
    </tr>
  </thead>
  <tbody>
    {% for image in data.images %}
    <tr>
      {% for file in image.files %}
        {% if file == None %}
        <td>No image</td>
        {% else %}
        <td>{{ file }}</td>
        {% endif %}
      {% endfor %}
    </tr>
    {% endfor %}
  </tbody>
</table>
但我很确定有更好的方法在Python中实现这一点。因此,任何更好的建议都是非常受欢迎的

更新2:Django模型可能如下所示:

class Version(models.Model):
    name = models.CharField(max_length=255)


class Image(models.Model):
    file = models.ImageField(upload_to='images')
    version = models.ForeignKey(Version)


class Object(models.Model):
    images = models.ManyToManyField(Image)
大概是这样的:

data\u versions={v1:[img1,img2…],v2:[img1,…]}

有更好的方法。 首先为您的数据创建一个模型(数据库表),并将所有内容存储在那里。通过这种方式,您将拥有更大的数据表示能力

型号.py

class VersionImage(models.Model):
    version_number = models.IntegerField()
    image_1 = models.ImageField()
    image_2 = models.ImageField()
    image_3 = models.ImageField()
(我对您的数据做了很多假设,因此可能希望根据您的需要更改这些假设)

更好的选择(如果您将拥有一个图像阵列)是将所有图像存储在一个模型中,并在版本表中创建M2M:

class ImageModel(models.Model):
    image = models.ImageField()

class VersionModel(models.Model):
    version_number = models.IntegerField()
    image = models.ManyToManyField(ImageModel)
然后,在将其发送到HTML模板之前,可以将所需的逻辑放在“表单/视图”上

在使用Django时,请尝试将所有内容都放在后端,并仅使用HTML来呈现已排序并准备好呈现的数据


如果您想让我详细说明以上任何一个问题,请告诉我。

我更新了问题,我认为现在问题更清楚了。你能检查一下这是否有助于给出更准确的答案。列表有什么错吗?@elena没什么错,但在我的情况下,我希望数据的格式允许我在布局代码中使用“data.versions”、“image.files”等。我只是觉得这样更容易阅读和维护。谢谢,我刚刚添加了与此问题相关的当前数据库模型。现在,我应该找到一种方法,将这些数据格式化,这样我就可以在模板中循环使用,而不需要任何进一步的逻辑。正如你所说,我不想在布局中有任何逻辑。
class ImageModel(models.Model):
    image = models.ImageField()

class VersionModel(models.Model):
    version_number = models.IntegerField()
    image = models.ManyToManyField(ImageModel)