在Flask中一次渲染多个模板

我正在做一个Flask应用程序。我有一个登录区域,一个博客区域。如果要获取用户的登录名,我将呈现登录模板。但这不会呈现必须显示在登录区域下方的博客模板。

我将尝试使其更加清晰:

{% block login %} {% endblock %}

blah blah

{% block blog_display %} {% endblock %}

现在我有一个login.html扩展它,并进入登录块。我有一个blogs.html进入blog_display。如何同时渲染两者?当我这样做时render_template(),我只能在login.html或之一上调用它blogs.html

请帮帮我。如果你需要,我会提供更多详细信息。

回答:

你可能会以错误的方式考虑布局。布局是模板中最通用的模板,而不是最复杂的模板。如果你只需要很少的独立功能,则按原样以及include在需要的地方编写它们。

也就是说,如果你想要这样的话:

----------------------------------

+--------------+

Header | Login |

+--------------+

----------------------------------

Body Content (Blog)

而且你还想要一个独立的登录页面,如下所示:

----------------------------------

Header

----------------------------------

+--------------+

| Login |

+--------------+

然后include在需要的地方创建一个登录部分。

模板/部分/login.html

<form action="/login" method="post">

<!-- Your login goes here -->

</form>

templates / your_base.html

<!DOCTYPE html>

<html>

<head>

{% block head %}

{#

Default HEAD content goes here

with extra nested blocks for children to override

if needed.

#}

{% endblock head %}

</head>

<body>

<header>{% block header %}{% endblock header %}</header>

{# Note: This assumes we *always* want a header #}

{% block content %}{% endblock content %}

</body>

</html>

templates / login.html

{% extends "your_base.html" -%}

{% block content -%}

{% include "partials/login.html" %}

{%- endblock content %}

templates / blog.html

{% extends "your_base.html" -%}

{% block header -%}

{{ super() }}{# Render the default header contents here #}

{% include "partials/login.html" %}

{%- endblock header %}

{% block content -%}

{# Render your blog posts here #}

{%- endblock content %}

以上是 在Flask中一次渲染多个模板 的全部内容, 来源链接: utcz.com/qa/431281.html

回到顶部