Django - 使用Bleach渲染Markdown Sanitizied

时间:2016-06-10 21:35:02

标签: python html django html5 markdown

当我做降价(文字),没有漂白剂时,我得到了想要的结果(原始):

<p>blah</p>

并正确显示为:

blah

其中“p”标记作为段落块正确呈现。

当我做bleach.clean(markdown.markdown(text))时,我得到(原始):

&lt;p&gt;blah&lt;/p&gt;

,它显示为:

<p>blah</p>

其中“p”标记是文本的一部分,而不是HTML段落块。

1 个答案:

答案 0 :(得分:1)

您需要将bleach ed HTML标记为安全

from django.utils.safestring import mark_safe

...
    return mark_safe(bleach.clean(markdown.markdown(text)))

但是,还有django-bleach提供与Django的集成和现成的标签,以便在Django中使用漂白。

{% load markdown_deux_tags bleach_tags %}
{{ view_user.profile.about|markdown:"user"|bleach }}

settings.py中你可以告诉django-bleach什么标签没问题

BLEACH_ALLOWED_TAGS = ['h1', 'h2', 'p', 'b', 'i', 'strong', 'a']
BLEACH_ALLOWED_ATTRIBUTES = ['href', 'title', 'style']
BLEACH_ALLOWED_STYLES = ['font-family', 'font-weight']
BLEACH_STRIP_TAGS = True