我在Wagtail中有一个名为images
的ListBlock。它运作良好。如果我放
{{page.images}}
在模板中,它呈现html代码,例如:
<ul>
<li>item1</li>
<li>item2</li>
</ul>
但是我无法找出如何将列表的第一项隔离出来。或至少如何手动遍历列表。
我非常确定解决方案很简单,但是我无法对其进行谷歌搜索,无法在文档中找到或无法从w源中了解。
答案 0 :(得分:2)
您还没有共享模型定义,但是我想这是这样的:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox cmb = (ComboBox)sender;
int selectedIndex = cmb.SelectedIndex;
int selectedValue = (int)cmb.SelectedValue;
ComboboxItem selectedName = (ComboboxItem)cmb.SelectedItem;
}
使用Wagtail文档中所示的manually looping over a StreamField value的标准格式,这将是:
class MyPage(Page):
images = StreamField([
('image_list', blocks.ListBlock(blocks.ImageChooserBlock)),
])
在这种情况下,您可能仅定义了一种块类型({% for block in page.images %}
{% if block.block_type == 'image_list' %}
{# at this point block.value gives you the images as an ordinary Python list #}
{# Output the first image using block.value.0: #}
{% image block.value.0 width-800 %}
{# Or loop over block.value manually with a 'for' loop #}
<ul>
{% for img in block.value %}
<li>{% image img width-800 %}</li>
{% endfor %}
</ul>
{% elif block.block_type == 'some_other_block' %}
...
{% else %}
...
{% endif %}
{% endfor %}
),因此image_list
可以省去;但是您仍然需要外部if block.block_type == 'image_list'
,因为StreamField仍被定义为块列表,即使您在该列表中只有一项。