我已经设置了一个流文件,除图像外,所有块均起作用。我知道我一定忽略了一些显而易见的事情。显示图像。它只是忽略html。在我的models.py中,我有:
content = StreamField(
[
("title_and_text", blocks.TitleTextBlock()),
("full_rich_text", blocks.RichTextBlock()),
("simple_rich_text", blocks.LimitedRichTextBlock()),
("image_float_left", blocks.ImageChooserBlock()),
],
null=True,
blank=True,
)
在我的HTML页面中,我有:
{% for block in page.content %}
{% include_block block %}
{% endfor %}
其他所有块均正确显示。在我的blocks.py中,我有:
class ImageFloatLeftBlock(ImageChooserBlock):
"""Float an image to the left"""
class Meta:
template = "streams/image_float_left_block.html"
icon = "doc-full"
label = "Float Image Left"
HTML文件将被忽略。为了确定,我将h1放入其中。正在显示图像。我认为它不在看streams / image_float_left_block.html文件。它确实适用于以相同方式设置的其他字段。例如,此作品有效:
class TitleTextBlock(blocks.StructBlock):
"""Title and text and nothing else."""
title = blocks.CharBlock(required=True, help_text="The heading for the block")
text = blocks.TextBlock(required=True, help_text="The body of the block")
class Meta:
template = "streams/title_text_block.html"
icon = "edit"
label = "Title & Text"
我怀疑它是调用中的父类:
class ImageFloatLeftBlock(ImageChooserBlock):
我在块导入中找不到更合适的东西。什么是合适的父类,还是有其他问题?
在StreamField定义中,您尚未告诉它使用自定义ImageFloatLeftBlock子类,因此它仍在使用没有模板设置的基本ImageChooserBlock。应该是:
content = StreamField(
[
("title_and_text", blocks.TitleTextBlock()),
("full_rich_text", blocks.RichTextBlock()),
("simple_rich_text", blocks.LimitedRichTextBlock()),
("image_float_left", blocks.ImageFloatLeftBlock()),
],
null=True,
blank=True,
)