用双引号括起来的Django文本的Misaka模板标记

2024-05-14 22:54:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Github风格的Markdown替换我正在构建的Django博客中的标准Markdown实现。我想使用Misaka,我已经创建了自己的自定义模板标记。不幸的是,出了点问题。在

这是我的模板标记文件,它在blog/templatetags/gfm.py中。__init__.py文件位于同一文件夹中:

from django import template
from django.template.defaultfilters import stringfilter
import misaka as m

register = template.Library()

@register.filter(is_safe=True)
@stringfilter
def gfm(value):
    rendered_text = m.html(value,
                           extensions=m.EXT_FENCED_CODE,
                           render_flags=m.HTML_ESCAPE)
    return rendered_text

这是我的一个模板:

^{pr2}$

输出的文本用双引号括起来返回,这就破坏了整个过程。否则,生成的标记看起来是正确的。在

我错在哪里了?我知道这不是数据库中的数据,就像我使用pdb在函数中获取value和{}的值,它们被正确地呈现。例如,下面是一篇文章的纯文本版本,由pdb打印:

u'A Python application:\r\n\r\n    print "Hello world"'

下面是使用Misaka在Markdown中呈现的版本:

u'<p>A Python application:</p>\n\n<pre><code>print &quot;Hello world&quot;\n</code></pre>\n'

我对Django相当有经验,但我对自定义模板标记还不熟悉。在


Tags: 文件djangofrompy标记importregister模板
1条回答
网友
1楼 · 发布于 2024-05-14 22:54:55

使用autoescape标记。在

{% autoescape off %}{{ post.text|gfm }}{% endautoescape %}

或者,您可以使用safe过滤器。在

^{pr2}$

相关问题 更多 >

    热门问题