用什么方法, Template 模板过滤所有的 html 标签,但又放行指定的 "\n" 换行符呢?

2018-01-22 17:31:02 +08:00
 miniyao
除了换行符 "\n"之外,其他所有的 HTML 标签都过滤掉,用了 jinja2 模板, {{ content | safe }} 所有的 html 标签全显示了,连<script>标签都通过了 =_=|| 改用 {{ content | striptags }} 所有的 html 又全过滤掉了,自然 "\n"也被过滤了。

有什么方法,过滤所有的 html 标签,但又放行指定的 "\n" 换行符呢?
2440 次点击
所在节点    Python
6 条回复
wellsc
2018-01-22 18:00:57 +08:00
自己 super 一个 striptags
miniyao
2018-01-22 20:57:06 +08:00
@wellsc 不怎么了解定制 striptags 的方法,能指点个提示吗?
PythonAnswer
2018-01-22 21:15:17 +08:00
自己加 br
miniyao
2018-01-22 21:22:17 +08:00
@PythonAnswer 加 br 也没有用啊,striptags 也会把 br 给 strip 了。( striptags 默认会把所有连续的 \r \n 空格这些通通转成一个 space )
qsnow6
2018-01-23 09:02:05 +08:00
把 BR 替换成\n 再过滤
wellsc
2018-01-23 09:59:57 +08:00
@miniyao #2 继承一下 jinja2 里面的 striptags 方法,然后 custom-filters http://jinja.pocoo.org/docs/2.10/api/#custom-filters

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/424982

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX