3

我使用例如 Markdown 语法在鹈鹕文章中定义了一个变量:

Motto: _"Paranoia is a virtue"_  Anonymous, 1984

然后我想在模板(例如article.html)中使用它:

 {% if article.motto %}<p>{{ article.motto }}</p>{% endif %}

显然,我在 HTML 中获得了类似的东西:

 <p>_"Paranoia is a virtue"_  Anonymous, 1984</p>

有没有办法处理变量(通过Jinja过滤器的fi)以获得Markdown处理后的文本。在这种情况下,结果应该是:

 <p><i>"Paranoia is a virtue"</i>  Anonymous, 1984</p>
4

3 回答 3

3

将以下内容添加到您的pelicanconf.py文件中以定义 Jinja 过滤器以传递变量markdown

from markdown import Markdown
markdown = Markdown(extensions=['markdown.extensions.extra'])

def md(content, *args):
    return markdown.convert(content)

JINJA_FILTERS = {
    'md': md,
}

然后你可以做

{% if article.motto %}<p>{{ article.motto | md }}</p>{% endif %}

并且您的变量将被正确呈现。

于 2015-08-22T18:39:55.577 回答
2

对于 3.5,没有。Markdown 默认不处理元数据。但是当前的开发版本为此包含了一个新设置 , FORMATTED_FIELDS。因此,等待 3.6 或从 github 安装 dev-version。

当然,你也可以使用 HTML 代替 markdown 语法:

Motto: <i>"Paranoia is a virtue"</i>  Anonymous, 1984
于 2015-05-16T18:53:22.003 回答
0

这行得通吗?

{% if article.motto %}<p>{{ article.motto | replace("_", "<i>", 1) | replace("_", "</i>" }}</p>{% endif %}
于 2015-05-13T19:56:39.363 回答