from django import template from django.utils.safestring import mark_safe import markdown import bleach from django.utils.html import escape from markdown.extensions import Extension class EscapeHtml(Extension): def extendMarkdown(self, md): md.preprocessors.deregister('html_block') md.inlinePatterns.deregister('html') register = template.Library() md = markdown.Markdown(extensions=["fenced_code", "nl2br", "smarty", "codehilite", EscapeHtml()]) @register.filter(needs_autoescape=True) def markdown(value, autoescape=True): html = mark_safe(bleach.linkify(md.convert(value))) # html = value md.reset() return html @register.filter(needs_autoescape=True) def nl_br(value, autoescape=True): html = mark_safe(value.replace("\n", "
")) return html