渲染一次在瓶多模板(Render multiple templates at once in Fla

2019-07-29 19:48发布

我正在做一个瓶的应用。 我有一个登录区域,一个博客面积。 如果我想获得用户的登录,我会呈现登录模板。 但是,这并不渲染必须显示登录区域下方的博客模板。 :/

我会尽量说得清楚:

{% block login %} {% endblock %}
blah blah
{% block blog_display %} {% endblock %}

现在我有一个login.html延伸这一点,并进入登录块。 我有一个blogs.html其进入blog_display 。 如何我都呈现? 当我做render_template()我可以调用它只有一个login.htmlblogs.html

请帮助我。 如果你问吧,我会提供更多的细节。

Answer 1:

你可能会考虑布局错误的方式。 您的布局是通用的范本中,不是最复杂的一个。 如果你需要的功能,小自足片然后把它们写出来只是因为他们是include他们需要的地方。

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

----------------------------------
                  +--------------+
  Header          |   Login      |
                  +--------------+
----------------------------------

  Body Content (Blog)

你也想拥有这样一个独立的登录页面:

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

  Header

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

  +--------------+
  |   Login      |
  +--------------+

然后创建一个登录部分和include它在你需要它。

模板/分音/的login.html

<form action="/login" method="post">
<!-- Your login goes here -->
</form>

模板/ 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>

模板/ login.html的

{% extends "your_base.html" -%}
{% block content -%}
{% include "partials/login.html" %}
{%- endblock content %}

模板/ 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 %}


Answer 2:

肖恩的答案做工不错,但如果你不希望延长块,你可以拿起一个简单的解决方案,这是我喜欢更多。

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

只要使用任何你需要包括模板



文章来源: Render multiple templates at once in Flask