在Jinja2模板中将Markdown渲染到多个块

时间:2019-10-31 01:39:17

标签: python jinja2 markdown static-site pelican

因此,可以说我有一个基本模板,并且我想有两个块-一个名为“ primary”,一个名为“ secondary”。当我去编写Markdown文件时,是否可以将Markdown的各个部分呈现到两个块中?我正在阅读Markdown文档和Jinja文档,据我所知,我并没有真正看到明确的答案。

1 个答案:

答案 0 :(得分:0)

您可以创建一个包含所需块的基本模板,然后定义扩展该基本模板的新页面并定义这些块中应包含的内容。一个简单的例子:

base.html

<div>
{% block my_primary_block %}
{% endblock %}
</div>

<div>
{% block my_secondary_block %}
{% endblock %}
</div>

现在,假设您想从另一个HTML文件中填充这些块,则可以定义每个块的内容:

article.html

{% extends "base.html" %}

{% block my_primary_block %}
Hello world!
{% endblock %}

{% block my_secondary_block %}
Goodbye world!
{% endblock %}

但是由于您询问降价问题,您可以使用HTML中的{{ article.variable_name }}使用文章中的变量,然后在文章标题中定义variable_name。例如,

article.html

{% extends "base.html" %}

{% block my_primary_block %}
{{ article.primary }}
{% endblock %}

{% block my_secondary_block %}
{{ article.secondary }}
{% endblock %}

然后在您的文章中,只需将这些字段添加到文章的元数据中即可

content / my_blog_post.md

Title: My cool blog post
Date: 2000-01-01 00:00
Primary: Hello world!
Secondary: Goodbye world!

This is the content of my cool blog post.