Визуализация нескольких шаблонов одновременно в колбе



Я делаю приложение для колбы. У меня есть область входа, область блогов. Если я хочу получить логин пользователя, я буду визуализировать шаблон входа. Но это не отображает шаблон блога, который должен отображаться под областью входа в систему. : /



Я постараюсь сделать это яснее:



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


Теперь у меня есть login.html, который расширяет это и входит в блок входа. У меня есть blogs.html, который переходит в blog_display. Как я оказывать как? Когда я делаю render_template(), я могу вызвать его только на одном из login.html или blogs.html.



Пожалуйста помогать мне. Я расскажу больше подробностей, если вы попросите.

592   2  

2 ответов:

Возможно, вы думаете о макетах неправильно. Ваш макет является самым универсальным из ваших шаблонов, а не самым сложным. Если вам нужны небольшие автономные части функциональности, то запишите их так, как они есть и include они там, где они нужны.

То есть, если вы хотите что-то вроде этого:

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

  Body Content (Blog)

И вы также хотите иметь автономную страницу входа, как это:

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

  Header

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

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

Затем создайте частичное имя входа и include это там, где вам нужно.

Пример

Шаблоны / партиалы / логин.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>

Шаблоны / логин.html

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

Шаблоны / блог.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 %}

Ответ Шона работает хорошо, но если вы не хотите расширять блоки, вы можете выбрать более простое решение, которое я предпочитаю больше.

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

Просто используйте его везде, где вам нужно включить шаблон

Comments

    Ничего не найдено.