我正在做一个Flask应用程序。我有一个登录区域,一个博客区域。如果要获取用户的登录名,我将呈现登录模板。但这不会呈现必须显示在登录区域下方的博客模板。
我将尝试使其更加清晰:
{% block login %} {% endblock %} blah blah {% block blog_display %} {% endblock %}
现在我有一个login.html扩展它,并进入登录块。我有一个blogs.html进入blog_display。如何同时渲染两者?当我这样做时render_template(),我只能在login.html或之一上调用它blogs.html。
login.html
blogs.html
blog_display
render_template()
请帮帮我。如果你需要,我会提供更多详细信息。
你可能会以错误的方式考虑布局。布局是模板中最通用的模板,而不是最复杂的模板。如果你只需要很少的独立功能,则按原样以及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 %}