python 如何使用Markdown作为Jinja2模板中的过滤器,然后直接从模板中提取Markdown Meta属性。假设你

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 如何使用Markdown作为Jinja2模板中的过滤器,然后直接从模板中提取Markdown Meta属性。假设你相关的知识,希望对你有一定的参考价值。

from pprint import pprint
import jinja2
import markdown

HTML_TEMPLATE = """{% macro get_html() %}
{{ content | markdown }}
{% endmacro %}
{% set html_content = get_html() %}

Title from Markdown meta-data: {{ get_title() }}

{{ html_content }}
"""

MARKDOWN_WITH_METADATA = """Title: Hello world!

Header:
-------
*Markdown content*
"""

md = markdown.Markdown(extensions=['meta'])

env = jinja2.Environment()
env.filters['markdown'] = lambda text: jinja2.Markup(md.convert(text))
env.globals['get_title'] = lambda: md.Meta['title'][0]
env.trim_blocks = True
env.lstrip_blocks = True

print(env.from_string(HTML_TEMPLATE).render(content=MARKDOWN_WITH_METADATA))

print('title meta-data is retrieved from the content:')
pprint(md.Meta['title'])

以上是关于python 如何使用Markdown作为Jinja2模板中的过滤器,然后直接从模板中提取Markdown Meta属性。假设你的主要内容,如果未能解决你的问题,请参考以下文章

markdown 如何在多个模块中使用共享变量作为依赖版本?

有没有直接的方法可以通过python从markdown文件生成pdf [关闭]

如何使用Sublime Text 3作为Markdown编辑器

如何使用Sublime Text 3作为Markdown编辑器

如何更改 Markdown 链接相对路径作为 gatsby-transformer-remark 的预处理

ansible中过滤器的介绍以及如何自定义过滤器