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