在 django 模板中将多行显示为网格
Display multiple rows as grid in django template
我需要从数据库向用户显示几行。例如,我有 table Fruits
列:name
、color
、price
。所以我希望我的表单生成 html 类似紧凑的网格视图:
<table>
<tr>
<th>Name</th>
<th>Color</th>
<th>Price</th>
</tr>
<tr>
<td>apples</td>
<td>yellow</td>
<td>100$</td>
</tr>
<tr>
<td>pears</td>
<td>green</td>
<td></td>
</tr>
</table>
我找到了使用 formset 的解决方法,如 this 问题中所述:
class Fruit(Model):
name = CharField(max_length=100)
color = CharField(max_length=100)
price = CharField(max_length=100)
FruitFormSet = modelformset_factory(Fruit, form=FruitForm)
form = FruitFormSet(queryset=Fruit.objects.all())
这有点酷,但是代码太多,看起来有点笨拙。我想知道我是否可以用 django crispy forms 做类似的事情。
所以我的问题是:
在 django 中显示来自 table 的多行的最佳方法是什么?我不需要向用户提供编辑它的方法。我应该全部使用表格吗?或者我只需要将对象字典传递给模板,遍历它并添加 html 标签?
表单用于编辑。由于您不需要编辑这些值,您可以简单地将上下文字典中的查询集传递给您的模板。一个例子是:
views.py
def fruit_list(request):
context = {'fruit_list': Fruit.objects.all()}
return render(request, 'fruits/fruit_list.html', context)
fruits/fruit_list.html
<table>
<tr>
<th>Name</th>
<th>Color</th>
<th>Price</th>
</tr>
{% for fruit in fruit_list %}
<tr>
<td>{{ fruit.name }}</td>
<td>{{ fruit.color }}</td>
<td>{{ fruit.price }}$</td>
</tr>
{% endfor %}
</table>
我需要从数据库向用户显示几行。例如,我有 table Fruits
列:name
、color
、price
。所以我希望我的表单生成 html 类似紧凑的网格视图:
<table>
<tr>
<th>Name</th>
<th>Color</th>
<th>Price</th>
</tr>
<tr>
<td>apples</td>
<td>yellow</td>
<td>100$</td>
</tr>
<tr>
<td>pears</td>
<td>green</td>
<td></td>
</tr>
</table>
我找到了使用 formset 的解决方法,如 this 问题中所述:
class Fruit(Model):
name = CharField(max_length=100)
color = CharField(max_length=100)
price = CharField(max_length=100)
FruitFormSet = modelformset_factory(Fruit, form=FruitForm)
form = FruitFormSet(queryset=Fruit.objects.all())
这有点酷,但是代码太多,看起来有点笨拙。我想知道我是否可以用 django crispy forms 做类似的事情。
所以我的问题是:
在 django 中显示来自 table 的多行的最佳方法是什么?我不需要向用户提供编辑它的方法。我应该全部使用表格吗?或者我只需要将对象字典传递给模板,遍历它并添加 html 标签?
表单用于编辑。由于您不需要编辑这些值,您可以简单地将上下文字典中的查询集传递给您的模板。一个例子是:
views.py
def fruit_list(request):
context = {'fruit_list': Fruit.objects.all()}
return render(request, 'fruits/fruit_list.html', context)
fruits/fruit_list.html
<table>
<tr>
<th>Name</th>
<th>Color</th>
<th>Price</th>
</tr>
{% for fruit in fruit_list %}
<tr>
<td>{{ fruit.name }}</td>
<td>{{ fruit.color }}</td>
<td>{{ fruit.price }}$</td>
</tr>
{% endfor %}
</table>