Crear una carpeta estática en Flask

Salman Mehmood 15 febrero 2024
Crear una carpeta estática en Flask

Aprenderemos, con esta explicación, cómo usar activos estáticos o archivos estáticos dentro del directorio estático. También aprenderemos cómo importar nuestro archivo CSS personalizado a Flask.

Crear una carpeta estática en Flask

En una aplicación Flask, hay una forma extraña de mostrar imágenes y cargarlas en sus clases de CSS personalizadas y usar su JavaScript personalizado. Entonces, sigamos adelante y comencemos.

Como estamos empezando desde cero, crearemos un nuevo proyecto. Importaremos algunas clases de Flask, escribiremos el módulo en minúsculas y luego crearemos un objeto de aplicación.

from flask import Flask, render_template

app = Flask(__name__)

Crearemos una función de página de inicio básica llamada index(). Estableceremos las dos raíces en decoradores individuales como '/home' y '/'.

El propósito de agregar dos raíces es mostrarle que podemos usar más de una ruta() en una sola función, lo que significa que ambas rutas diferentes pueden acceder a esta función.

Usaremos la palabra clave return para devolver el render_template() y pasar el archivo home.html.

@app.route("/home")
@app.route("/")
def index():
    return render_template("home.html")

Para ejecutar nuestra aplicación, necesitamos usar el siguiente código.

El método run() ayudará a ejecutar la aplicación Flask. Debemos pasar el debug igual a True porque queremos ver la depuración, pero puedes desactivarlo escribiendo False cuando lleves tu sitio al nivel de producción.

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

Ahora, necesitamos configurar una carpeta de plantilla donde colocaremos todos nuestros archivos HTML; para ello, crearemos una nueva carpeta y la llamaremos templates. Luego, necesitaremos crear otra carpeta nueva, a la que llamaremos static.

Ahora, es posible que ya podamos decir dónde colocaremos archivos específicos. Entraremos en la carpeta templates y crearemos un nuevo archivo llamado base.html, y luego haremos uno nuevo llamado home.html.

Escribamos un código HTML muy básico dentro del archivo base.html, y en el head, pondremos un título de bloque, y dentro de la etiqueta body, añadiremos otro contenido de bloque.

La aplicación Flask establece un valor por defecto para todos nuestros archivos static, que se guardarán en la carpeta llamada static, lo que significa que hay que hacer esta carpeta estática. Ahora, haremos referencia al nombre de archivo específico que queremos; pasaremos {{ url_for('static',filename='style.css') }} al atributo href y pondremos comillas dobles alrededor.

De esta forma, usaremos el código de Python en la etiqueta link para obtener la URL de la carpeta static, que nos dará la URL y luego especificará el nombre exacto del archivo.

<html>
  <head>
    <title>{% block title %}{% endblock  %}</title>
    <link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='style.css') }}">
  </head>
  <body>
    {% block content %}{% endblock %}
  </body>
</html>

Ahora, tenemos nuestra plantilla base. Ampliemos esta plantilla base usando el código jinja {% extends 'base.html' %} dentro de nuestro archivo home.html y usemos algunos bloques para acceder a los elementos base.html.

{% extends 'base.html' %}
{% block title %}
    Home Page
{% endblock  %}
{% block content %}
    <h1> Home Page</h1>
{% endblock  %}

Ahora, hablaremos sobre la creación de un archivo static dentro de nuestro directorio static y cómo podemos importar nuestro CSS personalizado. Necesitaremos crear un nuevo archivo CSS dentro de nuestro directorio static y llamarlo style.css; no importa cómo lo llames.

Puede cambiar el nombre del archivo en lugar de la extensión, pero asegúrese de recordar el nombre. Ahora escribiremos solo un estilo básico dentro del archivo style.css para mantenerlo simple.

Pondremos un selector CSS body, usaremos la propiedad color y pasaremos el valor del color crimson.

body {color: crimson;}

Y hemos terminado. Ahora, estamos listos para ir y ejecutar esta aplicación.

from flask import Flask, render_template

app = Flask(__name__)


@app.route("/home")
@app.route("/")
def index():
    return render_template("home.html")


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

Ahora, abra un navegador web y navegue a la página de inicio con un encabezado.

Salida de carpeta estática de Flask

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn