No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de Flask

Curso de Flask

Bernardo Cassina

Bernardo Cassina

Include y links

12/36
Recursos

Aportes 36

Preguntas 11

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Me parece excelente pedagog铆a. Se basa mucho m谩s en la pr谩ctica y tenemos la documentaci贸n como soporte en caso de querer ir m谩s all谩.

隆Hola Comunidad!

Uno compa帽ero de Platzi hizo la siguiente pregunta: 驴Cu谩l es la diferencia entre extends e include? Me parece que la respuesta que le di puede ser de utilidad para otros que tengan la misma duda. As铆 que la copio aqu铆 como aporte 馃憞:
.
Cuando usas el keywords extends para llamar a una plantilla, esta plantilla que has llamado toma el control de tu vista. Tomemos el ejemplo con el que venimos trabajando.
.
Contenido del archivo hello.html (reducido para el ejemplo):

01. {% extends 'base.html' %}
02. 
03. {% block title %} 
04.    {{ super() }}
05.    Bienvenida 
06. {% endblock %}
07. 
08. {% block content %}
09.    {% if user_ip %}
10.        <h1>Hello World Platzi, tu IP es {{ user_ip }}</h1>
11.   {% else %}
12.        <a href="{{ url_for('index') }}">Ir a inicio</a>
13.    {% endif %}
14. {% endblock %}

Nota que llamar a base.html hace que ahora todo el contenido de hello.html gira en torno al primero. Puedes notar esto, espec铆ficamente en la l铆nea #4, d贸nde necesita utilizar el m茅todo super() para traer contenido de la plantilla PADRE.
.
Adicionalmente puedes ver en la l铆nea #8 que se crea un bloque content que contiene (dependiendo del condicional) un T铆tulo o un Enlace. Este contenido SOLO se mostrar谩 si nombra a este bloque content en base.html. Por lo que si revisas el c贸digo de base.html podr谩s ver la llamada del PADRE al HIJO:
.
El c贸digo que copio de base.html ha sido adaptado para el ejemplo:

<!DOCTYPE html>
<html lang="en">
<head>
    <title> {% block title %} Flask Platzi | {% endblock %} </title>
</head>
<body>
    <!-- Aqu铆 puedes ver la llamada del padre al hijo -->
    {% block content %}
    {% endblock %}    
</body>
</html>

Sin embargo, cuando usas el keyword import lo 煤nico que haces es enlazar una plantilla con otra y ser谩 hello.html quien tendr谩 el control de hacer la llamada al contenido de la otra plantilla cuando lo requiera. Puedes ver lo aqu铆:
.
El c贸digo que copio de hello.html ha sido adaptado para el ejemplo:

01. {% import 'macros.html' as macros %}
02. 
03. {% block content %}
04.     <ul>
05.         {% for todo in todos %}
06.             {{ macros.render_todo(todo) }}
07.         {% endfor %}
08.     </ul>
09. {% endblock %}

Como puedes ver en la l铆nea #6 es hello.html quien decide llamar y usar el macro, inclusive podr铆as importar macros.html y no usarlo. Cosa que no podr铆a pasar con extends.
.
Espero que te haya servido algo de lo explicado aqu铆.
.
隆Saludos!

pasas de mucha teor铆a que si la explicaras facilitar铆a mucho entender y aprender mas r谩pido

Me gusta mucho el curso

pregunta 驴este html se renderea en el servidor o en el cliente?

Include y links

Creamos un archivo navbar.html:

<nav>
    <ul>
        <li><a href="{{ url_for('index') }}">Ir a inicio</a></li>
        <li><a href="https://midiaenunosminutos.com" target="_blank">Ir a mi blog</a></li>
    </ul>
</nav>

Y lo incluimos en base.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %} Curso Flask | {% endblock %}</title>
</head>
<body>
    <header>
        {% include 'navbar.html' %}
    </header>
    {% block content %}
    {% endblock %}
</body>
</html>

Me gusta mucho que el curso es bastante pr谩ctico, cursos llenos de teor铆a hay en todos lados, pero donde te pongan a practicar verdaderamente pocos, por eso me ha gustado mucho este curso.

Como estaba de caro el Platzi en aquel entonces

para los que quieran profundizar:

https://j2logo.com/tutorial-flask-espanol/

Soy docente en otra 谩rea, esto parece mas un taller que una clase. No deber铆an saltarse toda la teor铆a porque pueden confundir a muchos estudiantes鈥 Siempre se puede ir a la documentaci贸n, pero esa no es la idea de venir a Platzi.
En serio deber铆an planear mejor los contenidos.

Entonces cual seria la diferencia entre el include y el block??? 馃槷

main.py

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


app = Flask(__name__)

todos = ['Crompar Cafe', 'Entregar Informe', 'Salir a caminar']

@app.route('/')
def index():

    user_ip = request.remote_addr
    make = redirect('/hello')
    response = make_response(make)
    response.set_cookie('user_ip', user_ip)

    return response

@app.route('/hello')
def hello():    
    
    user_ip = request.cookies.get('user_ip')
    render = render_template(
        'hello.html', 
        user_ip=user_ip, 
        todos=todos
    )

    return render

if __name__ == "__main__":
    
    app.run(debug=True)

- Created variables in cosole ```bash export FLASK_APP= main.py #app principal para ejecuci贸n export FLASK_DEBUG=1 #active debug flask ``` - Commands **`echo $varible`** 鈥擵er variable `**flask run**` 鈥擟orrer flask

Si les falla la carga de archivos este fix en la ruta les servira

<a href="{{url_for('index')}}">

Excelente!

Despu茅s de Django (y todo el trabajo que me cost贸) Flask me parece mucho m谩s tranquilo y amigable 馃槅

El inlcude es lo mismo que hacer un import pero en esa misma linea llamamos a lo que inclu铆mos(importamos)

excelente clase. Gracias.

que buena explicacion, sencilla

esto esta hermoso

Si coincido con muchos ac谩, yo ya hab铆a probado web dev antes, pero nunca con Python siempre Js me atoraba, ahora como ya tengo nociones y todo me encanta el ritmo como se avanza ac谩, me encant贸 hacer el hello world tan pronto etc etc, pero creo que antes me hubiera frustrado much铆simo

Soy de seguridad, pero siempre me ha llamado la atenci贸n el desarrollo web. Tome el curso de Bootstrap el cual am茅, Javascript, etc. Ahora, Python es muy importante para nosotros los Pentesters. Quiero ver como opera Python en el entorno web, y hasta ahora muy interesante. Espero se le de m谩s est谩tica a la aplicaci贸n en las siguientes clases.

excelente clase interactiva 馃槃

Excelente, clase

navbar.html

<nav>
    <ul>
        <li> <a href=" {{ url_for('index') }} ">Ir a inicio</a> </li>
        <li> <a href="https://platzi.com/" target=" blank">Platzi</a> </li>
    </ul>
</nav>

macros.html

{% macro render_todo(todo) %}
    <li>Descripcion: {{todo}} </li>
{% endmacro %}

base.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title> 
            {% block title %} 
                Flask Platzi | 
            {% endblock %}
        </title>
    </head>

    <body>
        <header>
            {% include 'navbar.html' %}
        </header>
        {% block content %}            
        {% endblock %}
    </body>
</html>

hello.html

{% extends 'base.html' %}
{% import 'macros.html' as macros %}

{% block title %} 

    {{ super() }}
    Bienvenido

{% endblock %}

{% block content %}

    {% if user_ip %}
        <h1>Hola Mundo, soy la ip: {{user_ip}} </h1>
    {% else %}
        <a href=" {{ url_for('index') }} "> Ir al inicio de la pagina </a>
    {% endif %}

    <ul>
    {% for todo in todos %}
        {{macros.render_todo(todo)}}
    {% endfor %}
    </ul>    

{% endblock %}

debo decir que jinja2 y blade en laravel, son muy similares!! y creo que eso es genial porque es facil entender como funciona cada motor!

Gracias.

Resumen:

  • Crear un archivo navbar.html (Tendra una barra de navegacion)
<nav>
    <ul>
        <li><a href="{{ url_for('index')}}"> Ir a inicio</a></li>
        <li><a href="https://google.com" target="_blank">Ir a google</a></li>
    </ul>
</nav>
  • Incluirlo en el archivo base.html en una etiqueta <header>
    <header>
        {% include 'navbar.html' %}
    </header>

Cual es la diferencia de esto a un macro?

Si les sirve , les dejo la documentaci贸n de Flask , aqui pueden encontrar muchos ejemplos para seguir aprendiendo . Saludos https://flask.palletsprojects.com/en/1.1.x/

Excelente clase!!

  • Para incluir archivos html dentro de un html usamos {% include 'archivo.html' %}

Es muy parecido a usar algun preprocesador de css. 馃