1
A
回答
0
我觉得当你不使用|safe
的过滤器时,那么输出应该返回为只带有html标记的文本(未呈现为html输出)。
但是,如果你需要排除一些危险的标记,如<script>location.reload()</script>
,你需要定制templatetag过滤器来处理它..
我得到了很好的回答:https://stackoverflow.com/a/699483/6396981,通过BeautifulSoup
。
from bs4 import BeautifulSoup
from django import template
from django.utils.html import escape
register = template.Library()
INVALID_TAGS = ['script',]
def clean_html(value):
soup = BeautifulSoup(value)
for tag in soup.findAll(True):
if tag.name in INVALID_TAGS:
# tag.hidden = True # you also can use this.
tag.replaceWith(escape(tag))
return soup.renderContents()
# clean_html('<h1>This is heading</h1> and this one is xss injection <script>location.reload()</script>')
# output:
# <html><body><h1>This is heading</h1> and this one is xss injection <script>location.reload()</script></body></html>
@register.filter
def safe_exclude(text):
# eg: {{ post.description|safe_exclude|safe }}
return clean_html(text)
希望它有用..
相关问题
- 1. 显示ckeditor中的html标记
- 2. 在ckeditor底部显示HTML标记
- 3. 如何在html中使CKEDITOR显示文本
- 4. 如何使用C#从文本文件中正确显示HTML标记?
- 5. 如何使用XPath提取文本而不使用Html标记?
- 6. 如何删除所有HTML标记并使用C#显示纯文本
- 7. Django:显示为文本的HTML标记
- 8. CKEditor:文本以html格式显示
- 9. 的web2py-CKEditor的如何显示由CKEditor的,而不是我使用的web2py与ckeditor.I HTML标签
- 10. 在HTML中使用CODE标记,如何让它显示代码?
- 11. 如何使用HTML :: tag()方法显示HTML5标记?
- 12. 如何使用html的超链接标记显示servlet输出
- 13. 使用WAMP的PHP脚本显示带标记的HTML输出
- 14. 我使用html标记,但图像不显示
- 15. 使用php显示文本和html
- 16. 使用JavaScript突出显示html文本
- 17. 使用onMouseover显示文本JavaScript/HTML
- 18. 如何显示从第一页,当我们试图显示PDF文件在HTML中使用对象标记
- 19. 用的CKEditor 3的模板的使用:与保留HTML标记
- 20. 如何显示标记下的文本
- 21. 如何在数据库的文本中显示html标记
- 22. Xpath如何使用html标记获取文本
- 23. 如何使用换行符标记将CSV文件字符串显示为HTML?
- 24. 如何将HTML标记显示为文本
- 25. 如何使用HTML/JavaScript在Adobe Air中显示图标文件
- 26. 如何不包含HTML标签显示的文本
- 27. 如何使用.TextContent显示文本?
- 28. 如何使用innerHTML来显示文本
- 29. 如何使用Slick显示文本?
- 30. 如何使用数组显示文本?