【问题标题】:How to permanently remove html tags from django template (filter)?如何从 django 模板(过滤器)中永久删除 html 标签?
【发布时间】:2011-10-17 09:33:54
【问题描述】:
我尝试使用“striptags”和“removetags:”,但效果不佳。文字是这样的:
bla, bla, bla <p style="margin-top: 10px; margin-right: 0px; ....
如果我使用带有 truncatewords 的 striptags 或 removetags,模板会完全崩溃。
【问题讨论】:
标签:
django
django-templates
django-template-filters
【解决方案1】:
你应该先清理字符串然后使用截断词。如果strip_tags不能正常工作,你可以使用正则表达式清理标签。
import re
string = "<a href=''>abc</a>"
string = re.sub("<\!?\\\\?\/?\w+[^>]*>", "", string)
此正则表达式将清除所有打开、关闭和 cmets 标签。这是一个简单的解决方案,您可以使正则表达式严格。您可以使用 (?:td|span|div...等) 而不是 \w+ 来指定要清理的标签。
【解决方案2】:
在截断文本之前去掉标签,或者使用 HTML 感知 truncatewords_html。如果不这样做,您就是在对损坏的数据进行操作。