如何将不同的数据从视图传递到模板?

2024-04-25 14:27:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Django还比较陌生,刚刚碰到一堵墙,但我相信这对你们这些退伍军人来说将是一次轻松的散步。我有一个在模板的表中显示的项目列表。这没有问题,我在视图中创建一个对象(值列表),然后将其发送到模板并呈现表。但是,我还想在我的模板上显示一组count()作为链接显示,单击这些链接将进一步过滤显示的项目列表。例如,我的列表中可能有价格在25美元到50美元之间的项目,我的链接会显示有20个项目符合这个标准。在中选择链接时,将向发送请求网址.py它依次执行一个视图,进一步过滤查询集,然后再次呈现模板。你知道吗

如何将count()信息获取到模板中?我不认为我可以发送两个单独的列表(对象)到模板(至少我还没有弄清楚如何)。我想我需要在视图中获取计数,然后以某种方式将它们附加到我的list对象中,但我不确定如何做到这一点,也不确定如何在模板中解析这些值。我希望计数与从我的list对象生成的表分开显示,我有点担心我会弄乱我现在工作正常的表。你知道吗

我非常感谢您对如何解决这个问题提出的任何建议,我也非常感谢代码示例,因为我仍然对Python/Django代码有一定的挑战。你知道吗


Tags: 项目对象django代码视图模板列表链接
2条回答

您可以向模板发送任意数量的列表或对象。模板上下文只是一个字典,您可以根据需要向其中添加项。你知道吗

context = {
    'list1': my_first_list,
    'list2': my_second_list,
    ...
}

你的要求很模糊。代码有帮助。也。句号结束句子有帮助。你知道吗

I think I need to get the counts at the view and then somehow append them to my list object

how to parse those values in the template.

这里有一个方法。它不使用聚合函数。它们效率更高,但也更难理解。https://docs.djangoproject.com/en/1.3/topics/db/aggregation/

你的观点是这样的:

object_list = Model.objects.filter( some_attribute=some_value )

你在你的表格里这样做是为了看计数。你知道吗

{% for obj in object_list %}
    <tr><td>{{obj.name}}</td> <td>{{obj.related_set.count}}</td><tr>
{% endfor %}

这将为您计算obj.related_set.count()。它不是最有效的(聚合更有效)。但很简单。你知道吗

如果您想要一个链接,您将用包含链接的内容替换简单的{{obj.related_set.count}}

<a href="{% url "some.view.function" obj.id %}">{{obj.related_set.count}}</a>

相关问题 更多 >