后台编辑器里排好版的文章,保存后所有样式和列表都变成纯文本。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
import bleach
clean = bleach.clean(html, tags=['p','ul','li','strong','h2'], attributes={'*': ['class']})
入库或输出时对内容做了全量转义,标签被当成文本处理。这一点先确认清楚,后面就不用反复试。
「富文本过滤」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。
先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。别只看报错的最后一行,往上看几行,真正的起因通常在上面。
具体做法是,入库保留原始结构;输出按白名单清洗;样式类名单独放行。
改完照着核一遍,文章格式完整保留,脚本标签仍被清除。