使用 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
我有这个型号:
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