Pregunta sobre flask, render, templates – Renderizar múltiples plantillas a la vez en Frask.

11

Estoy haciendo una aplicación Frasco. Tengo un área de inicio de sesión, un área de blogs. Si quiero obtener el inicio de sesión del usuario, renderizaré la plantilla de inicio de sesión. Pero esto no hace que la plantilla del blog se muestre debajo del área de inicio de sesión. : /

Intentaré hacerlo más claro:

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

Ahora tengo unlogin.html lo que extiende esto, y entra en el bloque de inicio de sesión. tengo unblogs.html que entra enblog_display. ¿Cómo puedo hacer ambas cosas? Cuando lo hagorender_template(), puedo llamarlo solo a uno de loslogin.html oblogs.html.

Por favor, ayúdame. Te daré más detalles si lo pides.

Mejor aún, si hay dos bloques en su plantilla maestra y desea obtenerlos de dos plantillas secundarias diferentes, ¿qué hace? ¿Y cómo resuelves la crisis si no hay manera de hacer esto? SiddharthaRT

Tu respuesta

2   la respuesta
5

La respuesta de Sean funciona bien, pero si no quiere extender los bloques, puede buscar una solución más simple, que prefiero más.

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

Solo úselo en cualquier lugar que necesite para incluir la plantilla.

23

Usted puede estar pensando en diseños de manera incorrecta. Tu diseño es elmás Genérico de tus plantillas, no el más complejo. Si necesita pequeñas piezas de funcionalidad autónomas, escríbalastal como son yinclude ellos donde son necesarios.

Es decir, si quieres algo como esto:

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

  Body Content (Blog)

Y también desea tener una página de inicio de sesión independiente como esta:

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

  Header

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

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

A continuación, cree un inicio de sesión parcial yinclude Es donde lo necesitas.

Ejemplo

templates / partials / 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 %}
your_base tiene tanto unhead y unheader sección - sólo anulamosheader enblog Pero quería mostrar que podrías tener secciones queno hacer anular así como los que hiciste. Sean Vieira
Primero dices "bloque de cabeza" y luego "bloque de encabezado". ¿Es eso un error tipográfico? swdev

Preguntas relacionadas