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

问题描述 投票:0回答:1

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

python jinja2 markdown static-site pelican
1个回答
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.
© www.soinside.com 2019 - 2024. All rights reserved.