Рубрики
Без рубрики

TU Primer Web App Con Flask: Parte 2

Привет! Estamos acá con. La Segunda entrega de esta miniserie. Renderizando Información Con Jin … Теги с Python, WebDev, начинающими.

Привет! Estamos acá con. La Segunda entrega de esta miniserie.

Renderizando Información Con Jinja

Jinja Es Un Motor de Ploilllas Websíficamente Para El Lenguaje Python.

Es rápido. , Muy Fácil de Usar Y, Opcionalmente, PodeMos Ejecutar Nuestras Plantillas en Sandbox.

Flask, EN SU Instalación, Authora Automáticamente A Jinja2 POR Lo Que No Tendremos que Instalar Nada.

¿ Т.е. acordás de la ussistilla del capitulo interior?





    
    My Flask App


    

Hola desde flask

Este contenido se encuentra dentro del archivo html

CON La Ayuda de Jinja2, PodeMos Hacer Que El Contenido de Nuestra Pagina, Sea “Dinámico”.

Para entender esto mejor, vamos a Renombar index.html Por base.html. Y CREEMOS de Nuevo un index.html.

  • Дендор де база :




    
    {%block title%} {% endblock %}



    
    {% block content %}

    {% endblock %}


  • Дендор де индекс :
{% extends 'base.html' %}

{% block title %} Inicio {% endblock %}

{% block title %}
    

Hola desde Flask

Este contenido se encuentra dentro del archivo html

Esto es index.html

{% endblock %}

Эстос {% ...%} SE CONOCEN COMO DELIMITADORES. Nuestro Шаблон двигателя En Cuestión, Posee 4 De Estos:

  1. {% ...%} Пара Деклактионы (блок, набор, включают, простирается, и т. Д.).
  2. {{...}} Путешествия Para. Выполняет Imprir Valores, POR EJEMPLO, De Praybles.
  3. {# ... #} Delimitadores de Comentarios (No Se incluyen en la Salida).
  4. # ... ## Para Takenaciones de una linea

En Nuestro Caso, TeneMos LAS Decalaciones Block Y продлевается.

Лос Blwes ( Блоки ) Сын Усадос Пара Геренция, Y También Para Marcar Posiciones Y ReemPlazar Contenido.

Como Se judedeDeasor, {% блок заголовка%} Де index.html Reemplaza Custquier Contenido Que Se Enguentre Doctro de Esta Tailación, EN base.html Отказ

Si Ejecutamos Nuestro app.py Veremos Algo Como Esto:

COMO WEMOS, LO QUE SE ESTA MOSTRANDO ES EL CONTENIDO de Nuestro index.html. .

ESTO ES Gracias Al Bloque расширяется Отказ

Otro Bloque También Interesante, ES включить Que Premate Insertar HTML de un archivo en otro. Podriamos Tenser unch Archivo Header y un Footer Cuyo Contenido Podria Ser Mostrado En Otro Archivo Llamado Page (POR PONER EJEMPLO). En Esta Ultima Tendryamos Algo Así:

{% include 'header.html' %}

Esto es un titulo de prueba de PAGE

{% include 'footer.html' %}

Pasando Información. Nuestra Plothilla

COMO Vimos Mas Arriba, Jinja2 Premious Masterar El ConteniDo de Priiables Través de Los Delimitadores {{...}}

Estos Los Vamos A USAR Bastante Para Masterar Contenido En Nuestras Plantillas. POR EJEMPLO:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html', user="User")

app.run(port=3000)

EN Nuestro HTML, Debemos Colocar:





    
    {%block title%} {% endblock %}


    {% if user %}
        

Bienvenido {{ user }}

{% endif %} {% block content %} {% endblock %}

Y en la la salida veríamos algo como esto:

Нет Debemos Limitardos Pasar Un Solo Dato:

#...
    render_template('index.html', user='User', email='email@email.com')
#...

La Idey Es: клав

Valor Puede Ser unn String, Numero Numero, Переменная Уна, Una Lista, ООН objeto, Lo Que Sea. Lo gate es tenerlo en cuenta al momento de UsArlo En Nuestro Шаблон.

Formularios.

Para Dairle de Una Vez POR TODAS Forma Nuestra Idea, de Acá en Adelante, Vamos Trabajar Sobre Una Appleación Para Gestionar Alumnos y Caliedaciones, Con Toda La Información Que Ello Implica.

Vamos a a en archivo html против Эль Намбре registro_alumno.html Con El Siguiente Contenido:

{% extends 'base.html' %}

{% block title %} Registro de alumnos {% endblock %}

{% block content %}


{% endblock %}

¿ TE Acordás lo que dije de las rutas? Сын Лас Энкаргадас де recibir Las Petications. Vamos a Crage Una Nueva Para Manejar Este Formulio:

from flask import Flask, render_template, request, redirect, url_for

alumnos = []

@app.route('/')
def index():
    return render_template('index.html', alumnos=alumnos)

@app.route('/registro/', methods=['GET', 'POST'])
def registro():
    if request.method == 'POST':
        nombre = request.form["nombre"]
        email = request.form["email"]

        alumnos.append({"nombre":nombre, "email": email})

        return redirect(url_for('index'))

    return render_template('registro_alumno.html')

app.run(port=3000, debug=True)

Простая Vista, Notamos Varios Cambios:

  • COMOS IMPORTADO COSAS NUEVAS: запрос, перенаправить url_for.
  • Hemos Activado El Modo Debug
  • HEMOS AGREGADO UNA LISTA CON EL NOMPRE ALUMNOS Y SE LA ENVACHIMOS index.html.

Sobre LAS Importaciones:

  • Запрос Maneja Los Datos de la Petición Tales Como El Verbo Http y la información que viaga con el.
  • перенаправить NOS Perse Redirigir Al Usuario Otra Pagina
  • URL_FOR Toma El Nombre de Una Función Deviceda Como Ruta (индекс en este caso) y la transforma Y Devualve SU Valor (‘/’)

Bajando Un Poco, Nos Topamos Con La Ruta ‘/Registro/’ Y un atributo nuevo: Методы Отказ

POR DEFECTO, LAS RUTAS EN FLOBS TRABAJAN CON PETUTOONES GET. Pero Nuestro Formulio Envía DESTOS POR Medio De Post, POR Lo Que Debemos Inindarle Flask Que Métodos HTTP DEPEPECTAR.

EN ESE ATRIBUTO Podemos индикатор: Get, Post, поставить, удалить, Y otros.

SI Нет SE INDICA NADA, POR DEFECTO, Acceptara Solo Peticiones Get. Toda la información de la petición se enceentra en Запрос Отказ

Revery Al Modo Debug, ES Una Opción de Flubs Que NoS Periteer Mas Inferiate Acerca de Обиты En Nuestra Applicación. Si Querés Ver Como Funciona, Intenta Acceder A Una Ruta Que No Esseee.

POR ULTIMO, La Lista de Heumnos Sera La Que Usaremos Para Cargar Los Datos que nos lleguen del formulio. POR AHORA, LO HAREMOS ASí Y, EN LA PROUXIMA ENTREGA, VEREMOS COMO PERSISTIR LOS DESOS CONA UNA BASE DE DECOS.

Уна ВЭЗ Aclarado Eso, Seguimos.

En nuestro index.html, Debemos Colocar Lo Siguiente:

{% extends 'base.html' %}

{% block title %} Inicio {% endblock %}

{% block content %}
    

Bienvenido/a

{% if alumnos %}

Estudiantes

    {% for alumno in alumnos %}
  • {{ alumno["nombre"] }} - {{ alumno["email"] }}
  • {% endfor %}
{% else %}

No hay estudiantes en el sistema

{% endif %} {% endblock %}

Приложение Si Corremos Nuestra, Veremos El Siguiente Mensaje:

Comprobamos que nuestro Formulario Funciona Accediendo A http://127.0.0.1:3000/registro/

Marga un nombre y un email, y y presiona el botón “Регистратор”. Lo que va pasar es lo siguiente (Грандс Расгос):

  1. Флэбка представляется La Petición.
  2. Busca Cual Es La Función Ligada A ESA RUTA (EN Nuestro Caso Es Registro () ) y la ejecuta.
  3. La Función compueba el Tipo de método, y si se trata de post, cootiene la information que viene en EL Запрос, Generando CLAVE DICCINARIO CON EL SOUCUNTO CLAVE: VALOR CONSTRIGNETE E ANDUCTUCIENDOLO EN LA LISTA DE HELUMNOS. Si El Método No Es Post, Renderiza El Template Enviando Эль HTML Al Usuario.
  4. Redirecciona Al Usuario Al Index.

Medida Que Vayas Cargando Mas Alumnos, VAS A VER ALGO COMO ESTO:

Плавник … Поб Ахора

ESTO FUE TODO POR HOY. Espero Que Te Haya Gustado Y Servido.

En la próxima entrega veremos como usar wtf_forms para validar y asegurar formulios, y nos conectaremos a base una de datos con sqlalchemy !!

Si Queres Darle Una Mirada Al Codigo, TE DEJO El Link acá.

Оригинал: “https://dev.to/gareisdev/tu-primer-web-app-con-flask-parte-2-hp0”