Pergunta sobre templates, render, flask – Render vários modelos de uma só vez no Flask

11

Estou fazendo um aplicativo do Flask. Eu tenho uma área de login, uma área de blogs. Se eu quiser obter o login do usuário, processarei o modelo de login. Mas isso não renderiza o modelo de blog que deve ser exibido abaixo da área de login. : /

Vou tentar deixar mais claro:

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

Agora eu tenho umlogin.html que estende isso e entra no bloco de login. eu tenho umblogs.html que entra emblog_display. Como faço para renderizar os dois? Quando eu façorender_template(), eu posso chamá-lo em apenas um doslogin.html oublogs.html.

Por favor, me ajude. Vou dar mais detalhes se você pedir.

Melhor ainda, se houver dois blocos em seu modelo mestre e você quiser obtê-los de dois modelos-filhos diferentes, o que você faz? E como você resolve a crise se não há como fazer isso? SiddharthaRT

Sua resposta

2   a resposta
5

mas se você não quiser estender os blocos, pode escolher uma solução mais simples, que eu prefiro mais.

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

Basta usá-lo em qualquer lugar que você precise incluir o modelo

23

a maioria genérico de seus modelos, não o mais complexo. Se você precisar de pequenas funcionalidades independentes, então escreva-asassim como eles são einclude onde eles são necessários.

Isto é, se você quer algo assim:

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

  Body Content (Blog)

E você também quer ter uma página de login independente como esta:

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

  Header

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

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

Em seguida, crie um login parcial einclude onde você precisa.

Exemplo

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 tem tanto umhead e umheader seção - nós só substituirheader emblog mas eu queria mostrar que você poderia ter seções que vocênão faça substituir, bem como aqueles que você fez. Sean Vieira
Primeiro você diz "cabeça de bloco" e depois "cabeçalho de bloco". Isso é um erro de digitação? swdev

Perguntas relacionadas