Wagtail RichTextField发布内容丢失空格与缩进问题求助
Wagtail博客代码缩进保存后消失的解决办法
问题根源
你用的RichTextField是富文本字段,默认会自动过滤或格式化多余的空格、缩进——它的设计初衷是处理普通排版文本,而非代码内容,直接粘贴代码进去自然会丢失缩进。
解决方案
方案1:改用纯文本字段存储代码
把RichTextField换成TextField,它不会修改文本格式,能完整保留代码的缩进和空格:
class BlogPage(Page): body = TextField(blank=True) # 替换原有的RichTextField
之后在模板渲染时,用<pre><code>{{ page.body }}</code></pre>包裹内容,再搭配前端代码高亮库(比如Prism.js)就能正常显示带缩进的代码。
方案2:保留RichTextField但用代码块功能
如果不想替换字段,需要开启Wagtail编辑器的代码块功能,确保代码被正确包裹:
- 在项目
settings.py中配置富文本编辑器,开启code功能:
WAGTAIL_RICH_TEXT_EDITORS = { 'default': { 'WIDGET': 'wagtail.admin.rich_text.DraftailRichTextArea', 'OPTIONS': { 'features': [ 'code', 'bold', 'italic', 'link' # 保留你需要的其他编辑功能 ] } } }
- 编辑博客时,不要直接把代码粘贴到普通文本区域,而是选中代码内容,点击编辑器里的「代码块」按钮(通常是
</>图标),将代码包裹在代码块中再保存。这样编辑器会保留代码的缩进格式。
内容的提问来源于stack exchange,提问作者daxu
相关产品推荐
相关产品推荐

