使用 SnippetChooserBlock 时如何在 StreamField 中指定片段模板
How to specify a template for a Snippet in a StreamField when using SnippetChooserBlock
我想在 StreamField 中使用片段:
@register_snippet
class Advert(models.Model):
url = models.URLField(null=True, blank=True)
text = models.CharField(max_length=255)
def __str__(self):
return self.text
class MyPage(Page):
body = StreamField([('Snippet', SnippetChooserBlock(
target_model='web.Advert')])
my_page.html:
{% for block in page.body %}
{% include_block block %}
{% endfor %}
但是,在呈现 Advert
时,它只呈现 self.text
的 str
表示。如何为片段块指定模板布局,例如像 StructBlock
?
没有 SnippetChooserBlock 的文档。
与所有块类型一样,SnippetChooserBlock
accepts a template
argument 指定要为该块呈现的模板路径:
class MyPage(Page):
body = StreamField([('Snippet', SnippetChooserBlock(
target_model='web.Advert', template='blocks/advert.html')])
在该模板中,片段实例可用作变量 value
:
<div class="advert">
<a href="{{ value.url }}">{{ value.text }}</a>
</div>
我想在 StreamField 中使用片段:
@register_snippet
class Advert(models.Model):
url = models.URLField(null=True, blank=True)
text = models.CharField(max_length=255)
def __str__(self):
return self.text
class MyPage(Page):
body = StreamField([('Snippet', SnippetChooserBlock(
target_model='web.Advert')])
my_page.html:
{% for block in page.body %}
{% include_block block %}
{% endfor %}
但是,在呈现 Advert
时,它只呈现 self.text
的 str
表示。如何为片段块指定模板布局,例如像 StructBlock
?
没有 SnippetChooserBlock 的文档。
与所有块类型一样,SnippetChooserBlock
accepts a template
argument 指定要为该块呈现的模板路径:
class MyPage(Page):
body = StreamField([('Snippet', SnippetChooserBlock(
target_model='web.Advert', template='blocks/advert.html')])
在该模板中,片段实例可用作变量 value
:
<div class="advert">
<a href="{{ value.url }}">{{ value.text }}</a>
</div>