用户帖子的纯文本表单,我想删除帖子内容中的所有HTML标记,但保留换行符{{1}}来划分段落。
答案 0 :(得分:1)
您不能使用striptags
过滤器,因为它无条件地用一个空格替换所有空格序列。
解决方法是首先用唯一的占位符替换换行符,然后剥离标记,然后用换行符替换占位符。这有点冒险,因为输入文本可能包含占位符:
text | replace('\n', '-*- newline -*-') | striptags | replace('-*- newline -*-', '\n')
striptags
实现是一个简单的正则表达式替换:
import re
_striptags_re = re.compile(r'(<!--.*?-->|<[^>]*>)')
replaced = _striptags_re.sub('', input_text)
(省略空格处理步骤)
您可以在将值传递给模板之前在Python代码中执行此操作,或者在自定义过滤器中复制它。