使用 wagtail BlockQuoteBlock 时如何断行?

How to break lines when using wagtail BlockQuoteBlock?

我有这个型号:

from wagtail.wagtailcore import blocks

class BlogPage(Page):
    date = models.DateField("Post date")
    intro = RichTextField(blank=True)
    body = StreamField([
        ('heading', blocks.CharBlock(classname="full title")),
        ('paragraph', blocks.RichTextBlock()),
        ('image', ImageChooserBlock()),
        ('code', CodeBlock()),
        ('markdown', MarkDownBlock()),
        ('media', TestMediaBlock(icon='media')),
        ('blockquote', blocks.BlockQuoteBlock())
    ])

当我使用 blockquote 保存带有一些文本的页面时,我使用了一些换行符甚至 <br> 标签:

但是页面上没有换行:

那么如何做到这一点并节省换行符呢?我正在使用 wagtail 1.13.1.

我认为这样做是出于安全原因。但是有可能解决这个问题 - 例如像这样重新定义 BlockQuoteBlock

from django.utils.safestring import mark_safe
from django.utils.html import format_html

from wagtail.wagtailcore import blocks


class BlockQuoteBlock(blocks.TextBlock):

    def render_basic(self, value, context=None):
        if value:
            return format_html(
                '<blockquote>{0}</blockquote>', mark_safe(value))
        else:
            return ''

    class Meta:
        icon = "openquote"

我已将 mark_safe() 功能添加到 original implementation。然后在模型中使用这个块,如果你这样做,那么 <br> 标签开始工作

一种更简单的方法是在您的模板中使用 Django 的过滤器 linebreaksbr。这会将所有 "\n" 个字符转换为 <br> 个标记,因此您在编写内容时不必直接插入任何 html。

https://docs.djangoproject.com/en/4.0/ref/templates/builtins/#linenumbers