在Django模板中使用markdown过滤器时出现故障排除错误

时间:2013-05-22 10:23:15

标签: django markdown markup deprecated

使用Markdown库时,我似乎遇到以下错误:

  

'markdown'过滤器出错:Django不支持版本   Python markdown库< 2.1。

例如,它出现在标签上,例如:

{{ticket.get_description|markdown:"safe,footnotes,tables"}}

get_description函数在Ticket模型中定义。我们最近升级到了Django 1.5,代码是在Django 1.4之前编写的。我还将Markup库升级到2.3.1,但问题仍然存在。我还清除了旧的.pyc文件,只是为了确定。

据我所读,django.contrib.markup图书馆have been deprecated。那么,建议的解决方案/替代方案是什么?

2 个答案:

答案 0 :(得分:4)

一个想法是安装python see here的markdown2库 然后你创建你的装饰

import markdown2
.. all other imports needed..

register = template.Library()

@register.filter(is_safe=True)
@stringfilter
def markdown2(value):
    return mark_safe(markdown2.markdown(force_unicode(value),safe_mode=True,enable_attributes=False))

然后你用它

{% load myapp_markup %}
{{ value|markdown2 }}

代码是here

的adpated(未经过测试)

答案 1 :(得分:2)

只是更新:

我的装饰师看起来像这样:

import markdown2
from django import template
from django.template.defaultfilters import stringfilter
from django.utils.encoding import force_unicode
from django.utils.safestring import mark_safe

register = template.Library()

@register.filter(is_safe=True)
@stringfilter
def convertTxt(value):
    return mark_safe(markdown2.markdown(force_unicode(value)))

register.filter('convertTxt', convertTxt)

另外,我注意到命名模块或方法markdown2是不谨慎的:)