Django 当循环遍历Wagtail段落流字段项时,是否限制为单个块?
我在streamfields中添加了4个段落块。在段落块上循环时,它会在单独的标记中显示所有4个段落。我怎么能把它限制在第一段呢? 我尝试使用此解决方案:Django 当循环遍历Wagtail段落流字段项时,是否限制为单个块?,django,wagtail,Django,Wagtail,我在streamfields中添加了4个段落块。在段落块上循环时,它会在单独的标记中显示所有4个段落。我怎么能把它限制在第一段呢? 我尝试使用此解决方案: {% if forloop.counter0 == 0 %} <p>{{block.value}}</p> {% endif %} blog_page.html {page.body%中的块的% {%if block.block_type=='段落'%} {{block.value.0}} {%endfor%} 在
{% if forloop.counter0 == 0 %}
<p>{{block.value}}</p>
{% endif %}
blog_page.html
{page.body%中的块的%
{%if block.block_type=='段落'%}
{{block.value.0}}
{%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
然后在模板中使用
{{page.first_paragration}
。在模型内部的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
然后在模板中使用
{{page.first_paration}}
。难以置信!我不知道你能做到。因此,您可以在类中创建任何自定义函数,并使用Django模板调用它。谢谢。难以置信!我不知道你能做到。因此,您可以在类中创建任何自定义函数,并使用Django模板调用它。谢谢。