Jinja2 如何在Pelican模板中处理变量?

Jinja2 如何在Pelican模板中处理变量?,jinja2,pelican,Jinja2,Pelican,我在pelican文章中使用例如Markdown语法定义了一个变量: Motto: _"Paranoia is a virtue"_ Anonymous, 1984 Motto: <i>"Paranoia is a virtue"</i> Anonymous, 1984 然后我想在模板(例如article.html)中使用它,如下所示: {%if article.monit%}{{article.monit}}{%endif%} 一、 显然,在HTML中获得如下

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

Motto: _"Paranoia is a virtue"_  Anonymous, 1984
Motto: <i>"Paranoia is a virtue"</i>  Anonymous, 1984
然后我想在模板(例如article.html)中使用它,如下所示:

{%if article.monit%}{{article.monit}}

{%endif%}
一、 显然,在HTML中获得如下内容:

 <p>_"Paranoia is a virtue"_  Anonymous, 1984</p>
“偏执狂是一种美德”\uuAnonymous,1984年

是否有方法处理变量(f.i.通过Jinja过滤器)以在标记处理后获得文本。在这种情况下,结果应为:

 <p><i>"Paranoia is a virtue"</i>  Anonymous, 1984</p>
《偏执狂是一种美德》匿名,1984年


这样做有用吗

{% if article.motto %}<p>{{ article.motto | replace("_", "<i>", 1) | replace("_", "</i>" }}</p>{% endif %}
{%if article.mondit%}{{article.mondit | replace(|,“”,1)| replace(|,“”)}

{%endif%}
对于3.5,没有。默认情况下,标记不会处理元数据。但是当前的开发版本包含一个新的设置。因此,请等待3.6或从github安装开发版本

当然,您也可以使用HTML而不是标记语法:

Motto: _"Paranoia is a virtue"_  Anonymous, 1984
Motto: <i>"Paranoia is a virtue"</i>  Anonymous, 1984
座右铭:“偏执狂是一种美德”匿名,1984年

将以下内容添加到您的
pelicanconf.py
文件中,以定义一个Jinja过滤器,通过
标记传递变量:

从标记导入标记
markdown=markdown(扩展名=['markdown.extensions.extraction'])
def md(内容,*args):
返回markdown.convert(内容)
JINJA_过滤器={
“md”:md,
}
那你就可以了

{%if article.monit%}{{article.monit | md}}

{%endif%}

您的变量将被正确呈现