【问题标题】:How can I remove a specific HTML tag in Django templates?如何删除 Django 模板中的特定 HTML 标签?
【发布时间】:2018-02-11 23:25:05
【问题描述】:

我尝试在 Django 模板中使用 striptags,但它删除了所有 HTML 标记。我只想删除特定的 HTML 标签,例如 <p><h1> 标签。在template怎么办?

这是我的'Post' 模型: POST MODEL

我有一个名为text 的字段,我的视图是这样的: DRAFT VIEW

我在 get_queryset() 方法中获取并过滤我的 Post 对象/字段,然后将它们返回给 post_draft_list.html,然后获取提交的文本 {{post.text}}。 text 包含一些 html 标签,我想删除它们。现在如果我想通过bleach 清理文本字段,我该如何在我的视图中执行此操作(get_queryset)?

【问题讨论】:

  • striptags 的文档将您指向bleach 以获得更好的控制...

标签: python html django templates filter


【解决方案1】:

您也可以使用this snippet,但是 sn-p 使用正则表达式来解析 HTML,这不是一个好主意。所以我建议像 Astik 提到的那样使用bleach

【讨论】:

    【解决方案2】:

    试试:

    import bleach
    
    filtered_text = bleach.clean(data_text, tags=[u'a', u'i', u'li', u'ol', u'ul'])
    

    只允许那些你需要的标签,在tags

    有关更多信息,您可以关注bleach,因为出于安全目的,removetags 过滤器从 django 1.8 开始已弃用。

    【讨论】:

    • 我认为它现在已经贬值了,让我看看其他选项。
    • @AliasgharSoltani,首先使用removetags 然后safe 渲染进行检查。
    • 不要使用removetags,而是使用striptags,看看它是否有效。
    • @AliasgharSoltani,我已经更新了我的答案。请看一下。希望对您有所帮助。
    • 好的。我应该在哪里添加这个?
    猜你喜欢
    • 2012-10-11
    • 2011-09-30
    • 2018-09-21
    • 2011-10-17
    • 2017-06-21
    • 2012-12-06
    • 2012-12-06
    • 2019-07-28
    • 2017-07-23
    相关资源
    最近更新 更多