Marco de matraz

Flask es un micro-framework que tiene muy poca dependencia de bibliotecas externas. Es un marco muy ligero y nos da libertad para hacer lo que queramos.

En este capítulo, vamos a construir un proyecto usando el framework Python y Flask.

Inicio y configuración del matraz

Como la mayoría de las bibliotecas de Python, el paquete Flask se puede instalar desde el índice de paquetes de Python (PPI). Primero creemos un directorio (en este capítulo, hemos creado un directorio llamadoflaskProject) luego creó un entorno virtual (y lo llamó como flaskEnv) donde se cargarán todas las dependencias relacionadas con el proyecto (incluido el matraz). También puede instalar flask-sqlalchemy para que su aplicación de matraces tenga una forma sencilla de comunicarse con la base de datos SQL.

Después de instalar el matraz, su flaskEnv (nuestro nombre de entorno virtual) mostrará algo como a continuación:

Creando una aplicación con matraz

Al instalar el matraz, podemos crear un sencillo "hello application in flask”Con muy pocas líneas de código de la siguiente manera:

Escriba lo siguiente en la terminal:

$python flaskapp.py

Y puede ver el siguiente resultado:

Que se ejecuta en http://127.0.0.1:5000/ o en localhost:5000

A continuación se muestra la explicación de lo que hicimos en nuestro código de ejemplo:

  • En primer lugar, importamos la biblioteca de clases Flask. Una instancia de esta clase es la aplicación WSGI.

  • En segundo lugar, creamos una instancia de esta clase. El paquete de aplicación o el nombre del módulo es nuestro primer argumento. Es obligatorio que el matraz sepa dónde encontrar archivos estáticos, plantillas y otros archivos.

  • El siguiente es el decorador route () que usamos para saber qué URL debe activar nuestro método / función.

Creación de enrutamiento de URL

El enrutamiento de URL hace que las URL de su aplicación web sean fáciles de recordar. Ahora crearemos algunas rutas URL:

/hello
/members
/members/name

Podemos escribir el siguiente código basado en la URL anterior y guardarlo como app.py.

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
   return "Index!"
	
@app.route('/Hello')
def hello():
   return "Hello, World!"
	
@app.route("/members")
def members():
   return "Members"
	
@app.route("/members/<name>/")
def getMember(name):
   return name
	
if __name__ == '__main__':
   app.run(debug=True)
Al reiniciar la aplicación, usamos las siguientes líneas de código para obtener diferentes resultados en varias URL:

$ python app.py

Running on http://localhost:5000/

Obtendremos el siguiente resultado en nuestro navegador:

Podemos probar otras URL en nuestro navegador de la siguiente manera:

Running on http://localhost:5000/hello, will give the following output −

Running on http://localhost:5000/members, will give −

Running on http://localhost:5000/members/TutorialsPoint/, will give you the following output −

Pero normalmente no queremos devolver una cadena (como arriba), devolvemos plantillas. Para eso queremos usar una función "render_template”Del matraz y devuelve render_template con alguna entrada. Entonces, la siguiente función hará nuestro trabajo:

from flask import render_template
return render_template(‘home.html’)

Creemos una plantilla de carpeta y coloquemos el archivo home.html en ella.

A continuación, discutiremos sobre el diseño. En lugar de usar la etiqueta de cabeza y cuerpo html para cada plantilla, diseñaremos un diseño para incluir etiquetas de cabeza y cuerpo y envolver las vistas o la plantilla actual. Para eso, tenemos que crear un archivo separado y llamarlolayout.html. En esto, podemos poner nuestra etiqueta de cabeza normal, etiqueta de cuerpo y todas las demás etiquetas requeridas.

Podemos crear nuestro nuevo layout.html con las siguientes líneas de código:

<!DOCTYPE html>
<html>
   <head>
      <meta charset="utf-8">
      <title>MyFlaskApp</title>
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
   </head>
   <body>
      {% include 'includes/_navbar.html' %}
      <div class="container">
      {% block body %}
      {% endblock %}
      </div>
      <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js">
      </script>
   </body>
</html>

En el código anterior, le hemos dado la pista principal, MyFlaskAp, usamos css cdn en el encabezado y javascript en el bloque del cuerpo para habilitar el bootstrap.

Ahora, tenemos que crear una barra de navegación para cada página. Para eso, primero tenemos que crear una carpeta de inclusión y luego crear el archivo _navbar.html dentro de ella. Ahora, en _navbar.html, tenemos que usar la plantilla de inicio estándar de getbootstrap.com. El archivo _navbar.html recién creado será el siguiente:

E incluya este archivo _navbar.html en nuestro archivo layout.html.

{% include 'includes/_navbar.html' %}

Como tenemos el bloque de diseño, podemos extender este bloque en nuestro archivo de inicio (home.html).

Nuestro archivo home.html se puede crear usando el siguiente código:

{% extends 'layout.html' %}
{% block body %}
   <div class="jumbotron text-center">
      <h1>Welcome to FlaskApp</h1>
      <p>This application is built on Flask webframework!</p>
   </div>
{% endblock %}

Usando esto si intentamos ejecutar nuestro archivo flaskapp.py, entonces podríamos ver la siguiente salida en nuestro navegador:

Ahora queremos activar (actualmente las pestañas no funcionan) nuestro aboutlengüeta. Cree una ruta para la pestaña Acerca de y cree un archivo de plantilla,about.html.

Acerca de la ruta de la pestaña en appflask.py será como se muestra a continuación:

El archivo about.html tendrá el siguiente contenido:

Así que ahora nos ocupamos de Home y About. Para los artículos, podemos crear un nuevo archivo (data.py) en el directorio raíz, donde colocamos los datos y lo llamamos en nuestra página web.

data.py

def Articles():
   articles = [
      {
         'uid': 1,
         'title': 'Article_One',
         'body': 'Flask, being a microframework, often requires some repetitive step
            to get a third party library working. Because very often these steps could 
            be abstracted to support multiple projects the Flask Extension Registry 
            was created.',
         'Author': 'Rajesh Joshi',
         'Created-on': '07-09-2018'
      },
      {
         'uid': 2,
         'title': 'Article_Two',
         'body': "Flask, being a microframework, often requires some repetitive steps
            to get a third party library working. Because very often these steps could 
            be abstracted to support multiple projects the Flask Extension Registry 
            was created.",
         'Author': 'Rajesh J',
         'Created-on': '07-09-2018'
      },
      {
         'uid': 3,
         'title': 'Article_Three',
         'body': 'Flask, being a microframework, often requires some repetitive steps
            to get a third party library working. Because very often these steps could be
            abstracted to support multiple projects the Flask Extension Registry 
            was created.',
         'Author': 'Joshi Rajesh',
         'Created-on': '07-09-2018'
      }
   ]
   return articles

A continuación se muestra el código para articles.html, que mostrará los títulos de los artículos para cada uid.

{% extends 'layout.html' %}
{% block body %}
   <h1>Articles</h1>
   {% for article in articles %}
      <li class="list-group-item">
         <a href="article/{{article.uid}}"> {{article.title}}</a>
      </li>
   {% endfor %}
{% endblock %}

En resumen, Flask es uno de los frameworks web de Python más populares debido a su peso ligero. Aunque es micro, es un marco web de Python extensible. Al proporcionar la funcionalidad requerida, flask acelera el desarrollo de una aplicación web simple. Por lo tanto, Flask es más adecuado para aplicaciones más pequeñas y menos complicadas.