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 .