2013-07-20 14 views
11

ho impostato cartella per i file statici come questonon possono mostrare immagine da STATIC_FOLDER nel modello Flask

app.config['STATIC_FOLDER'] = 'tmp' 

Nel modello che uso tag img per mostrare un'immagine memorizzata in/tmp:

<img src='IKE2low.jpg' width="200" height="85"> 

In Firebug vedo l'errore 404 invece dell'immagine. Per favore dimmi cosa ho fatto di sbagliato?

Grazie in anticipo.

+0

Un piccolo aggiornamento: ora ho provato a mettere questo file accanto al mio file py principale e anche nella cartella dei modelli - ancora non c'è nessuna immagine vista dal tag img. Mi chiedo: dove cerca le immagini ??? – Nervosa

risposta

20

Non sono sicuro di quale sia l'elemento di configurazione STATIC_FOLDER che si sta utilizzando. Dove lo hai trovato?

Ci sono in realtà due argomenti al costruttore Flask classe che governano la configurazione dei file statici:

  • static_folder: il default è "statico". Questo è il prefisso che devi usare negli URL per accedere ai file statici.

  • static_url_path: questa è la posizione del disco della cartella statica. Di default questo valore è uguale all'impostazione static_folder.

Ad esempio, se si utilizza questa configurazione:

from flask import Flask 
app = Flask(__name__, static_url_path = "/tmp", static_folder = "tmp") 

Quindi è possibile accedere alle immagini come segue:

<img src='/tmp/IKE2low.jpg' width="200" height="85"> 

È possibile rimuovere anche la necessità di avere un prefisso gli URL come segue:

from flask import Flask 
app = Flask(__name__, static_url_path = "", static_folder = "tmp") 

E poi si può accedere alle immagini come:

<img src='/IKE2low.jpg' width="200" height="85"> 

Si noti che è comunque necessario avere una radice /.

Ma il modo migliore per farlo è non fare riferimento ai percorsi dell'immagine in modo esplicito e utilizzare invece url_for per generare gli URL corretti. Se si utilizza modelli Jinja2 che sarebbe:

<img src="{{ url_for('static', filename = 'IKE2low.jpg') }}" width="200" height="85"> 

Quest'ultima espressione potrebbe funzionare indipendentemente da dove e come i file statici sono configurati.

+0

Grazie mille! La tua risposta mi ha aiutato molto! – Nervosa

+0

Miguel, hai forse incrociato le tue definizioni per static_folder, static_url_path? Ho notato che in seguito si usa static_url_path per fare riferimento a quel testo anteponendo un URL di risorsa. – apublius

Problemi correlati