Ciao Ivan, On Mon, Feb 16, 2015 at 08:11:22PM +0100, Ivan B. wrote: > > Il 16/02/2015 19:41, Alessandro Dentella ha scritto: > >Che ne dici se ci dividiamo il lavoro? Tu comincia a dirci cosa > >non hai capito, cosa hai fatto e come hai dedotto che non > >funziona... e postaci anche la configurazione... Hai pb col > >runserver o sotto nginx? sandro *:-) > > Effettivamente sono stato un po' poco chiaro ^^ > I problemi, per il momento, sono sotto runserver.
Ok, leggi allora proprio fino in fondo... > Quello che non capisco è come configurare la directory per gli > static file e come richiamarla nei template. > > Ok, ecco cosa ho combinato. > > In settings.py ho inserito: > STATIC_URL = '/static/' ok, questo cambia come chiamerai i file, non quali e dove sono/li metti > e controllato che ci fosse 'django.contrib.staticfiles' in installed_apps Questo garantisce che esista il comando staticfiles > Nel template ho inserito: > {% load staticfiles %} > <img src="{% static "img/prova.png" %}" alt="Prova" /> Secondo me sei già troppo avanti nel debug, fai un pezzo alla volta. Cerca prima di capire se i file finiscono nel posto giusto Quello che non vedo nella tua conf è la configurazione del meccanismo degli staticfiles: STATICFILES_DIRS STATICFILES_FINDERS STATIC_ROOT che puoi leggere rapidamente con "manage.py diffsettings | grep STATIC" sotto linux e mac. Il meccanismo degli static file sostanzialmete prevede * una configurazione per definire i raccoglitori (FINDERS) * una configuraione per definire la cartella di destinazione (STATIC_ROOT) I finders di default raccolgono da * applicazioni: django.contrib.staticfiles.finders.AppDirectoriesFinder * filesystem: django.contrib.staticfiles.finders.FileSystemFinder Questo a sua volta necessita di STATICFILES_DIRS (una tupla) per capire da dove raccogliere La mia configurazione è così: STATICFILES_DIRS = ('{PRJ}/web/static_manual',) STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', ) STATIC_ROOT = '{PRJ}/web/static_auto' STATIC_URL = '/static/' dove {PRJ} lo sostituisci con la root del tuo progetto. Il nome *static_manual* suggerisce che è una cartella dove metto a mano gli statici del progetto, *static_auto* è quella dove il comando collectstatic copia i file prelevandoli da dove è istruito (apps e fylesystem). > Il mio progettino di test si chiama (che fantasia) progetto. La > directory static che contiene a sua volta "/img/prova.png" ho > provato a posizionarla nella root di progetto (dove c'è manage.py), > all'interno di "progetto/progetto/" e all'interno di > "progetto/progetto/templates". In nessuna delle tre prove sono non la metterei nei templates, il resto va bene, pur di dichiararla nella STATIC_ROOT. Ma non mi pare che tu abbia chiaro il ruolo di STATICFILES_DIRS. Io non metto mai nulla in static_auto (La mia STATIC_ROOT) che lascio riempire a mano. Il motivo è banale: quella contiene file che non vogli tracciare con mercurial, mentre la static_maual (dichiarata in STATICFILES_DIRS è composta di file che tengo sotto controllo di versione. DEBUG ===== A questo punto ti suggerisco di lanciare manage.py collectstatic e verificare se i file arrivano al posto giusto (nella STATIC_ROOT) e solo dopo che te ne sei accertato arriverai al debug del template. RUNSERVER ========= Quando usi il runserver non ti serve neanche passare dalla cartella STATIC_DIR se in urls.py del progetto hai qualcosa tipo: urlpatterns += staticfiles_urlpatterns() Risulta pratico per lo sviluppo. Ma prima di usare questo termina con successo gli altri passaggi. sandro *:-) -- Sandro Dentella *:-) http://www.reteisi.org Soluzioni libere per le scuole http://sqlkit.argolinux.org SQLkit home page - PyGTK/python/sqlalchemy _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python