我在Wagtail 1.3.1,Django 1.7.11上运行。
我已激活hallohtml和hallojustify插件,它们出现在工具栏中(没有图标,但按钮在这里)。
可以使用按钮,并且可以在textarea中看到修改(我的意思是我可以将一个字段放在中心,例如我看到它)。
当我发布页面时,hallojustify或hallohtml所做的修改不会保存,而我仍然可以使用粗体/斜体按钮保存内容。看起来html被清理了......
我应该错过一些东西,但是......
@hooks.register('insert_editor_js')
def editor_js():
js_files = [
]
js_includes = format_html_join('\n', '',
((settings.STATIC_URL, filename) for filename in js_files)
)
return js_includes + format_html(
"""
<script>
registerHalloPlugin('hallojustify');
registerHalloPlugin('hallohtml');
</script>
"""
)
答案 0 :(得分:5)
根据设计,Wagtail只允许HTML标记和属性的子集,并删除任何不在其白名单上的内容。这样做有几个原因:它阻止编辑者插入恶意内容(例如<script>
标签),并鼓励网站开发人员将内容和演示文稿分开。 (你不应该在富文本内容中包含格式化信息,例如左/右/中心对齐 - 应该在模板和CSS中定义。)
您可以使用construct_whitelister_element_rules
挂钩自定义HTML白名单规则 - 但是,我建议您重新考虑是否确实需要使用如此多的功能来重载富文本编辑器,或者是否有更结构化的方式达到你想要的(例如StreamField)。