在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级标题

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

阅读 12k
3 个回答

这样试一下, 应该更方便

from django.utils.safestring import mark_safe

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

markdown部分应该是没有问题的 markdown默认没有开启安全模式
可能是在引用的时候的问题
在模板里面试试
{{ value|safe }}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题