4

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

“markdown”过滤器中的错误:Django 不支持 Python markdown 库 < 2.1 的版本。

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

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

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

根据我的阅读,这些django.contrib.markup已被弃用。那么,建议的解决方案/替代方案是什么?

4

2 回答 2

4

一个想法是安装 python 的 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 }}

代码从这里修改(而不是测试)

于 2013-05-22T13:02:20.370 回答
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 :)

于 2013-05-23T14:30:38.800 回答