循环遍历鹡鸰段落流场项目时限制为单个块?



我在流字段中添加了 4 个段落块。循环遍历段落块时,它会在单独的标签中显示所有 4 个段落

。我怎么能只限制在第一段块? 我尝试使用此解决方案:

{% if forloop.counter0 == 0 %}
<p>{{block.value}}</p>
{% endif %}

但问题是,只有当段落字段按第一顺序放置时,它才有可能。例如,在第一段之前可以有 3 张图像,这使得可能的解决方案无效。

博客/模型.py

class BlogPage(Page):
body = StreamField([
('paragraph', blocks.RichTextBlock()),
('image', ImageChooserBlock()),
])

content_panels = Page.content_panels + [
StreamFieldPanel('body')
]

blog_page.html

{% for block in page.body %}
{% if block.block_type == 'paragraph' %}
<p>{{block.value.0}}</p>  <!-- Another attempt at trying to get single paragraph -->
{% endfor %}

在模型内部的 Python 代码中执行这种逻辑通常比尝试将其硬塞到 Django 模板符号中更容易:

class BlogPage(Page):
body = StreamField([
('paragraph', blocks.RichTextBlock()),
('image', ImageChooserBlock()),
])
content_panels = Page.content_panels + [
StreamFieldPanel('body')
]
def first_paragraph(self):
for block in self.body:
if block.block_type == 'paragraph':
return block.value

然后在模板中使用<p>{{page.first_paragraph}}</p>

最新更新