自定义渲染RichTextBlock以删除<div class =“rich-text”>

时间:2017-11-21 14:51:09

标签: django richtextbox wagtail

我确定答案就在那里,而我却没有看到。如何呈现RichTextBlock以移除包裹<div class="rich-text">

{% include_block block %}{{ block.value }}都提供了包裹div

2 个答案:

答案 0 :(得分:3)

不幸的是,这是硬编码的,目前无法覆盖 - 请参阅https://github.com/wagtail/wagtail/issues/1214

答案 1 :(得分:0)

我通过创建自定义模板标签解决了此问题

在您的项目中,请在templatetags目录中创建一个文件(例如templatetags / wagtailcustom_tags.py),内容如下。

from django import template
from django.utils.safestring import mark_safe

from wagtail.core.rich_text import RichText, expand_db_html

register = template.Library()


@register.filter
def richtext_withclasses(value, classes):
    if isinstance(value, RichText):
        html = expand_db_html(value.source)
    elif isinstance(value, str):
        html = expand_db_html(value)
    elif value is None:
        html = ""
    else:
        raise TypeError(
            "'richtext_withclasses' template filter received an invalid value; expected string, got {}.".format(
                type(value)
            )
        )

    return mark_safe('<div class="' + classes + '">' + html + "</div>")

然后在模板中加载模板标记

{% load wagtailcustom_tags %}

并使用自定义类(或根本没有任何类)呈现RTF文本字段

{{ myfield | richtext_withclasses:"my custom class" }}