Instalamos Python y Visual Studio Code. Aprendemos a crear entornos virtuales y creamos nuestra primera aplicación Flask.
Comenzamos a reorganizar la estructura de nuestra aplicación. Para hacerlo, procedemos en dos pasos.
Primero, organizamos todos nuestros archivos HTML en una carpeta de plantillas y accedemos a ellos desde nuestro archivo application.py.
Segundo, para evitar repeticiones en el código de los archivos HTML, introducimos plantillas.
Estos dos pasos nos ayudarán a hacer nuestro código más eficiente y accesible.
Concluimos el capítulo con el desafío semanal, donde introducimos un menú de navegación para navegar a las páginas de inicio, metodología y la aplicación light-talk.
En esta sección, instalamos Python y Visual Studio Code. También exploramos otros editores de código como PyCharm o Sublime Text.
Desarrollamos nuestra primera aplicación Flask. Primero, creamos un entorno virtual y aprendemos a activarlo. Segundo, instalamos Flask en el entorno virtual. Tercero, escribimos el código de Flask. Finalmente, ejecutamos nuestra primera aplicación y la abrimos en el navegador.
En esta sección, trasladamos todo el código HTML del archivo application.py a archivos HTML separados y organizamos esos archivos en una carpeta de plantillas.
En los archivos HTML, hay líneas de código que aparecen en todos los archivos, lo cual no es muy eficiente. Para evitar ese problema y hacer que nuestro código sea más eficiente y limpio, introducimos plantillas.
Desarrollamos un menú de navegación para acceder a las páginas de inicio, metodología y la aplicación light-talk.
Python es un lenguaje de programación interpretado, orientado a objetos y de alto nivel con semántica dinámica. Sus estructuras de datos integradas de alto nivel, combinadas con la tipificación dinámica y el enlace dinámico, lo hacen muy atractivo para el desarrollo rápido de aplicaciones, así como para su uso como un lenguaje de scripting o de conexión para integrar componentes existentes. La sintaxis simple y fácil de aprender de Python enfatiza la legibilidad y, por lo tanto, reduce el costo de mantenimiento de los programas. Python admite módulos y paquetes, lo que fomenta la modularidad del programa y la reutilización del código. El intérprete de Python y la extensa biblioteca estándar están disponibles en forma de código fuente o binario sin costo para todas las principales plataformas, y pueden ser distribuidos libremente.
Más información sobre Python:
Mira el video de YouTube proporcionado en el encabezado:
Para desarrollar nuestra aplicación, necesitamos escribir código. Hay muchos editores de código. Usaremos uno de los editores de código más populares: Visual Studio Code. Otros editores que he utilizado en mis clases son PyCharm y Sublime Text.
Visual Studio Code, comúnmente referido como VS Code, es un editor de código fuente creado por Microsoft con el framework Electron, para Windows, Linux y macOS. Sus características incluyen soporte para depuración, resaltado de sintaxis, autocompletado inteligente, fragmentos de código, refactorización de código y Git integrado. Los usuarios pueden cambiar el tema, los atajos de teclado, las preferencias, e instalar extensiones que añaden funcionalidad adicional.
Más información sobre Visual Studio Code:
Mira el video de YouTube proporcionado en el encabezado:
Flask es un framework web micro escrito en Python. Se clasifica como un microframework porque no requiere herramientas o bibliotecas particulares. No tiene una capa de abstracción de base de datos, validación de formularios, ni otros componentes donde las bibliotecas de terceros preexistentes proporcionan funciones comunes. Sin embargo, Flask admite extensiones que pueden agregar características a la aplicación como si estuvieran implementadas en Flask mismo. Existen extensiones para mapeadores objeto-relacionales, validación de formularios, manejo de archivos cargados, varias tecnologías de autenticación abierta y varias herramientas comunes relacionadas con el framework.
Un Framework de Aplicación Web o simplemente un Framework Web representa una colección de bibliotecas y módulos que permiten a los desarrolladores de aplicaciones web escribir aplicaciones sin preocuparse por detalles de bajo nivel como el protocolo, la gestión de hilos, y demás.
Más información sobre Flask:
Un video con el resumen de todos los pasos está en el canal de YouTube del curso. El código de la aplicación está en el repositorio de GitHub del curso.
El código de nuestra primera aplicación Flask (versión extendida):
from flask import Flask
application = Flask(__name__)
@application.route('/')
@application.route('/home')
def home():
return "<h1>Página de inicio</h1>" \
"<p>En este proyecto desarrollamos
una aplicación...</p>"
@application.route('/desarrolladores')
def developers():
return "<h1>Desarrolladores</h1>" \
"<p>En esta página web, presentamos
a los desarrolladores de la aplicación...</p>"
@application.route('/light_talk_app')
def app_calculator():
return "<h1>Calculadora de Aplicaciones</h1>" \
"<p>En esta página web, desarrollamos una
aplicación para el aprendizaje del español...</p>"
if __name__ == '__main__':
application.run(debug=True)
En nuestra primera aplicación, todo el código está en un solo archivo (application.py). Esa no es la mejor manera de organizar el código, ya que cuando introducimos más código en nuestra aplicación, es muy difícil organizar el código en un solo archivo. Dentro del desarrollo de nuestra aplicación, modificaremos la estructura para hacer el código más eficiente y claro.
El video con todos los pasos de esta sección y el código se pueden encontrar en los enlaces de YouTube y GitHub a continuación:
El código en el archivo home.html:
<!DOCTYPE html>
<html>
<head>
<title>{{title}}</title>
</head>
<body>
<h1>Inicio</h1>
<p>
Nuestra app de aprendizaje del español light-talk....
</p>
<p>
Desarrolladores:
<ul>
<li>
Desarrollador 1: Breve biografía. Enlace al CV.
</li>
</ul>
</p>
</body>
</html>
El código en el archivo application.py:
from flask import Flask, render_template
application = Flask(__name__)
@application.route('/')
@application.route('/home')
def home():
return render_template('home.html', title='home')
if __name__ == '__main__':
application.run(debug=True)
Hasta ahora, para acceder a nuestras páginas web, necesitamos introducir manualmente las rutas en el navegador. Eso no es muy práctico. En el desafío semanal, introduciremos un menú de navegación para acceder a las páginas de inicio, metodología y light-talk app. En esta sección, vamos a explicar cómo introducir un enlace a una ruta dentro de nuestra aplicación Flask.
Para acceder a rutas en nuestra aplicación Flask, utilizaremos la función url_for de Flask. La función url_for se define como una función que permite a los desarrolladores construir y generar URLs en una aplicación Flask. La forma de usar url_for en nuestra aplicación Flask es muy simple. En esta sección, utilizaremos url_for en un enlace. Más adelante en el curso, la usaremos en otras situaciones.
En el archivo home.html, vamos a crear un enlace a las páginas de metodología y calculadora de carbono. Para hacerlo, escribimos (ver código en el cuadro de la derecha):
(<a href="{{ url_for('business') }}">enlace</a>)
El código en el archivo home.html:
<p>
El objetivo de nuestra app es enseñar español.
Para ello desarrollamos un modelo de negocio
(<a href="{{ url_for('business') }}">enlace</a>) para
enseñar a nuestras estudiantes español.
</p>
Como se puede observar en la carpeta de plantillas en la sección anterior, todos los archivos html tienen la misma estructura. Cada archivo comienza con html, luego el head y luego el body. Esa no es una forma eficiente de escribir código porque hay partes del código que se repiten en cada archivo. Podemos evitar esa repetición utilizando plantillas.
Flask aprovecha Jinja2 como su motor de plantillas. Obviamente, eres libre de usar un motor de plantillas diferente, pero aún así debes instalar Jinja2 para ejecutar Flask.
Para verificar que ya tienes instalado Jinja2, puedes abrir tu archivo requirements.txt, y allí podrás ver que cuando instalas Flask, también se instala Jinja2 por defecto.
Una plantilla Jinja es simplemente un archivo de texto. Jinja puede generar cualquier formato basado en texto (HTML, XML, CSV, LaTeX, etc.). Una plantilla Jinja no necesita tener una extensión específica: .html, .xml o cualquier otra extensión está bien.
Una plantilla contiene variables y/o expresiones, que se reemplazan con valores cuando se renderiza una plantilla; y etiquetas, que controlan la lógica de la plantilla. La sintaxis de la plantilla está muy inspirada en Django y Python.
Ya hemos utilizado Jinja2 en la sección anterior cuando pasamos el título de nuestra página web desde el archivo application.py al archivo home.html utilizando .
Más información sobre Plantillas Flask y Jinja2:
El video con todos los pasos en esta sección, y el código, se pueden encontrar en los enlaces de YouTube y GitHub a continuación:
Usaremos Jinja2 dentro de nuestro proyecto varias veces. En esta sección, lo usaremos para hacer nuestro código más eficiente e introducir algunas declaraciones lógicas en nuestro código.
El código del archivo layout.html:
<!DOCTYPE html>
<html>
<head>
{% if title %}
<title>{{ title }}</title>
{% else %}
<title>home</title>
{% endif %}
</head>
<body>
{% block content %} {% endblock %}
</body>
</html>
El código del archivo home.html:
{% extends "layout.html" %}
{% block content %}
<h1>Inicio</hses1>
<p>
El estudio del español ...
</p>
<p>
Desarrolladores:
<ul>
<li>
<strong>Desarrollador 1</strong>: Breve biografía. Enlace al CV.
</li>
</ul>
</p>
{% endblock content %}
Hasta ahora, para navegar hacia la página de inicio, la del modelo de negocio y la aplicación light-talk, necesitamos cambiar las rutas manualmente en el navegador.
Esto hace que la navegación sea muy difícil.
En este desafío semanal, introduciremos un menú de navegación para acceder a todas las páginas web. Queremos que el menú de navegación aparezca en todas las páginas web. Además, si queremos introducir una nueva pestaña en nuestro menú de navegación, queremos que aparezca en todas las páginas web, y no queremos hacerlo cambiando cada página individualmente. Por lo tanto, utilizaremos plantillas y, en particular, introduciremos el menú de navegación en el archivo layout.html, de modo que las demás páginas web hereden el menú de navegación.
Discutiremos el desafío semanal el viernes ..... Utilizaremos el chat principal para ayudarnos mutuamente en el desafío semanal.
Dentro de esos días, por favor comparte tu código de ruta del modelo de negocio con el resto de los grupos usando el chat principal,
para que podamos aprender unos de otros.
Compartiré mi solución personal para el desafío semanal en el enlace de GitHub a continuación después de la clase el viernes....