在django中允许基本的html标记
发布时间:2020-12-20 13:36:21 所属栏目:Python 来源:网络整理
导读:我正在创建一个处理用户提交内容的应用程序.我希望用户能够使用基本的html标记使其基于文本的内容看起来很漂亮,即我 b br .但是我确实希望阻止它们使用脚本标记之类的东西. Django会自动转义所有内容,因此它也会禁用所有安全标记.我可以使用以下命令禁用它:
我正在创建一个处理用户提交内容的应用程序.我希望用户能够使用基本的html标记使其基于文本的内容看起来很漂亮,即<我> < b> < br> .但是我确实希望阻止它们使用脚本标记之类的东西. Django会自动转义所有内容,因此它也会禁用所有安全标记.我可以使用以下命令禁用它:
{{somevar | safe}}或{%autoescape off%} 但是,这也将启用所有有害脚本标记. Django确实提供了linebreaks过滤器标签,它将白色空间转换为br或p标签,同时保持html安全: {{ somevar|linebreaks }} 不幸的是,我不知道任何允许使用b或i标签的过滤器. 所以我想知道这个问题是否有智能解决方案.如果您建议第三方库,最好在保存模型或呈现内容时使用解决方案. UPDATE 最后,我使用了这个解决方案Python HTML sanitizer / scrubber / filter.后一个答案提供了一种使用Beautiful Soup库从用户提交的内容中删除所有不需要的html标签的方法.这可以在保存模型之前完成,因此在渲染页面时可以安全地使用模板过滤器{{somevar | safe}}. 解决方法
看看
django-tinymce.它应该为您提供所需的灵活性.在进入数据库之前,您将最安全地清理内容.可以将TinyMCE配置为允许或不允许您喜欢的任何标签.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |