0

我的编辑器希望能够在编辑器中编辑原始 html。例如,我们可以有简单的列表标记:

<ul>
   <li>Some text<li>
</ul>

或者使用自定义类和事件标签:

<ul>
   <li class="my_class">Some text
       <span class="special">Some additional info</span>
   <li>
</ul>

等等。

我知道内置的 Draftail 不支持 html 编辑。但是使用第三方编辑器会出现问题:

失去与系统的整合。例如,我不能像使用草稿一样放置图像。或者,预览模式无法处理第三方编辑器的所有功能。

因此,也许有人对这种情况有有效的解决方案。我考虑过使用特殊的 StreamField 面板,但它似乎是块的开销。不喜欢这样的想法,即有很多块几乎没有区别

4

2 回答 2

1

Wagtail 故意不支持在页面编辑器中开箱即用的原始 HTML 编辑。Wagtail的哲学(禅)是帮助编辑和开发人员在 Wagtail 工作时“戴上合适的帽子”。

HTML 编辑通常最好提供给开发人员,他们需要了解可访问性、安全性和工具(如 git)的好处等所需的知识。

但是,如果必须进行 HTML 编辑,您可能需要为此目的构建自己的编辑器字段,或者找到适合 HTML 标记的包,例如django-markupfield。但是,必须为您最终使用的任何内容构建添加图像/片段/页面选择器功能。您可能还想查看Wagtail markdown 包作为 HTML 的替代方案或起点,它允许链接到页面/图像的语法。

Wagtail 允许您使用任何类型的Django 字段或小部件与FieldPanel.

请确保在实施此功能时考虑所有风险,例如可访问的 HTML(例如标题级别)、安全性(不允许某些标签,如脚本标签)、格式错误的 HTML 泄漏到呈现的模板中,当然还有最终用户体验。

于 2022-02-01T10:36:35.917 回答
0

最后我做了我自己的解决方案简单地重写了 wagtail 的 Html DbWhiteLister 和 HtmlConverter 中的一些方法。这让我有机会允许任何带有任何属性的标签。

https://github.com/Chenger1/wagtailtinymce.-Full-Rich-Text-Editor

于 2022-02-09T21:08:40.243 回答