【问题标题】:Displaying data in Django在 Django 中显示数据
【发布时间】:2015-05-06 08:58:49
【问题描述】:

我有一个显示数据中所有对象的视图,我在模板中使用{% for object in objects %} 标记这样做。但我认为当它被转换为 html 时,每个对象都会被<p> 标签包围?但问题是我想成对显示两个对象。不是 1 个元素的垂直列表。如何在 Django 中循环遍历数组并自定义它们的布局位置?任何帮助,将不胜感激!

【问题讨论】:

  • Django 不会自动在模板元素周围放置 p 标签。如果发生这种情况,您必须自己在模板中进行操作。也许你应该放慢那个模板?
  • @DanielRoseman 在{% for object in objects%} 中,如果我说{ object.name } 会不会有<p> 标记?
  • 不,除非你自己把它放在那里,或者 object.name 包含该标签本身。

标签: python html css django templates


【解决方案1】:

没有用于连续配对对象的内置模板标签,因此您有两种选择;您可以编写自己的模板标签,将(a, b, c, d) 之类的对象列表转换为((a, b), (c, d)) 之类的双元素 元组列表,或者在渲染模板之前在您的视图中创建两个对.

import itertools

def object_list(request):
    ...
    iterator = iter(objects)
    pairs = itertools.izip_longest(*(iterator, iterator))
    return render(request, 'objects/object_list.html', {'objects': objects, 'pairs': pairs})

在您的模板中,您可以按如下方式迭代对;

{% for first, second in pairs %}
  <p>{{first}}, {{second}}</p>
{% endfor %}
...

希望这可以帮助您解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2016-12-24
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    相关资源
    最近更新 更多