Визуализация нескольких шаблонов одновременно в колбе
Я делаю приложение для колбы. У меня есть область входа, область блогов. Если я хочу получить логин пользователя, я буду визуализировать шаблон входа. Но это не отображает шаблон блога, который должен отображаться под областью входа в систему. : /
Я постараюсь сделать это яснее:
{% block login %} {% endblock %}
blah blah
{% block blog_display %} {% endblock %}
Теперь у меня есть login.html, который расширяет это и входит в блок входа. У меня есть blogs.html, который переходит в blog_display. Как я оказывать как? Когда я делаю render_template(), я могу вызвать его только на одном из login.html или blogs.html.
Пожалуйста помогать мне. Я расскажу больше подробностей, если вы попросите.
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