在django模板中使用markdown



 环境是python3, django1.6

为实现在django的后台用markdown语法写好blog, 然后用自定义的django的过滤标签实现markdown语法的转义.

mytag.py 的内容为:


 import markdown
@register.filter(name='my_markdown')
def my_markdown(value):
    return markdown.markdown(value)       #返回的是字符串格式的HTML, 如'<p>hi</p>'

在模板中使用这个过滤器tag:


 <div class="article">{{ article.body|my_markdown }}</div>

但是输出却成了这样:


 '<h1>hello, world </h1>'

而我想要的是:


 hello, world      // 这是一个1级标题

为什么? 怎么实现这个功能呢? 谢谢各位.
(问题好像出在定义过滤标签时返回的是一个字符串的值, 模板直接拿来用了)

python markdown django

霁月河童子 10 years, 8 months ago

这样试一下, 应该更方便


 from django.utils.safestring import mark_safe

# ...
def my_markdown()
    return mark_safe(markdown.markdown(value))

xiaoxin answered 10 years, 8 months ago

Your Answer