加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在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配置为允许或不允许您喜欢的任何标签.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读