simple images create python flask jinja2

python - images - flask simple



Enlace a los archivos estáticos de Flask con url_for (2)

¿Cómo se usa url_for en Flask para hacer referencia a un archivo en una carpeta? Por ejemplo, tengo algunos archivos estáticos en la carpeta static , algunos de los cuales pueden estar en subcarpetas como static/bootstrap .

Cuando trato de publicar un archivo desde static/bootstrap , static/bootstrap un error.

<link rel=stylesheet type=text/css href="{{ url_for(''static/bootstrap'', filename=''bootstrap.min.css'') }}">

Puedo hacer referencia a los archivos que no están en subcarpetas con esto, que funciona.

<link rel=stylesheet type=text/css href="{{ url_for(''static'', filename=''bootstrap.min.css'') }}">

¿Cuál es la forma correcta de referenciar los archivos estáticos con url_for ? ¿Cómo utilizo url_for para generar url_for a archivos estáticos en cualquier nivel?


En mi caso, tuve instrucciones especiales en el archivo de configuración nginx:

location ~ /.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { try_files $uri =404; }

Todos los clientes han recibido ''404'' porque nginx no se sabe nada sobre Flask.

Espero que ayude a alguien


Tiene por defecto el punto final estático para archivos estáticos. También la aplicación Flask tiene los siguientes argumentos:

static_url_path : se puede usar para especificar una ruta diferente para los archivos estáticos en la web. El valor predeterminado es el nombre de la carpeta static_folder .

static_folder : la carpeta con archivos estáticos que debe servirse en static_url_path . El valor predeterminado es la carpeta "estática" en la ruta raíz de la aplicación.

Significa que el argumento del filename tomará una ruta relativa a su archivo en static_folder y la convertirá en una ruta relativa combinada con static_url_default :

url_for(''static'', filename=''path/to/file'')

convertirá la ruta del archivo de static_folder/path/to/file a la ruta url static_url_default/path/to/file .

Entonces, si desea obtener archivos de la carpeta static/bootstrap , use este código:

<link rel="stylesheet" type="text/css" href="{{ url_for(''static'', filename=''bootstrap/bootstrap.min.css'') }}">

Que se convertirá a (usando la configuración predeterminada):

<link rel="stylesheet" type="text/css" href="static/bootstrap/bootstrap.min.css">

url_for también url_for documentation .