django - 如何从模板引用 django 视图中的设置对象?
问题描述
我在数据库中有如下形式的数据:
collection_name|manufacturer|product_type|description|image_url
----------------------------------------------------------------
Testing |FakeCo |Bed |pretty nice|/img/1.jpg
Testing |FakeCo |Desk |pretty bad |/img/2.jpg
Testing |FakeCo |Nightstand |pretty ok |/img/1.jpg
Testing |FakeCo |Draws |pretty nice|/img/3.jpg
最初,我使用 for 循环来显示每个结果中的字段,最终结果如下:.
对于上面的示例数据集,我要做的是仅显示某些字段的第一个结果,知道它们对于返回的所有行都是相同的,然后对于剩余的字段仅在它们不同时显示它们。
我尝试在我的 django 视图中使用集合,因为另一个答案表明这将消除重复并解决我的问题。
我的 Django 视图:
def collection_detail(request, name=None):
template = loader.get_template('/webapps/my_webapp/furniture_site/main_page/templates/main_page/product-detail.html')
products = product.objects.filter(collection_name=name)
collection_name = []
manufacturer = []
description = []
image_url = []
for product in products:
collection_name.append(product.collection_name)
manufacturer.append(product.manufacturer)
description.append(product.description)
image_url.append(product.image_url)
collection_name = set(collection_name)
manufacturer = set(manufacturer)
description = set(description)
image_url = set(image_url)
context={'products': products}
return HttpResponse(template.render(context))
我的问题是,我无法在我的模板中引用这些设置项。
例如,在我的模板中使用:
{% for instance in products %}
{{ instance.collection_name }} Collection <br />
{% endfor %}
什么都不返回,就像
{% for instance in products %}
{{ collection_name }} Collection <br />
{% endfor %}
引用通过模板中的视图返回的项目的正确方法是什么?
最终,我试图获得如下结果(注意描述和集合名称仅使用一次,并且不返回重复的图像 url)。
解决方案
首先,您没有将正确的数据传递给您的模板。
您需要在您的上下文中传递,collection_name
和manufacturer
。description
image_url
context = {
'products': products,
'collection_name': collection_name,
'manufacturer': manufacturer,
'description': description,
'image_url': image_url
}
现在您可以在模板中访问这些,例如:
{% for instance in collection_name %}
{{ instance }} Collection <br />
{% endfor %}
其他人也一样。
推荐阅读
- python - 我怎样才能像坐标一样排列这个输出
- r - data.table 等效于 dplyr::%in% 使用 ! (非)运算符
- javascript - 反应获取请求返回一个空数组
- c# - EF Core 从未包含的实体列表中填充“NotMapped 属性”
- arrays - 具有不同元素的多维数组;VBA excel
- logistic-regression - SPSS在逻辑回归的“步骤2”中遗漏了一个虚拟变量
- java - 在 Android 8+ 上录制电话
- python - 读取 xml 文件并使用特定字段输出到 csv
- python - 在 matplotlib 中垂直对齐共享相同 x 轴的时间序列(绘图和条形图)
- acumatica - 为什么在 PUT 上调用 Expand 和 Select 会导致返回 LESS 信息 - Acumatica REST API