使用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。那么,建议的解决方案/替代方案是什么?
答案 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是不谨慎的:)