Sto sviluppando un progetto Django (1.3) composto da molte applicazioni. Ogni applicazione ha i propri file statici sotto la propria directory static
. Inoltre, ho aggiunto una directory chiamata project_static
che dovrebbe contenere file statici comuni in varie applicazioni, come jQuery.Gestione di file statici per più app in Django
Il problema a cui mi imbatto immediatamente è quello di denominare le collisioni. Per impostazione predefinita, collectstatic
inserirà tutto in una directory globale static
, senza classificarli per applicazione. Questo non funziona per me, poiché ogni applicazione ha, per esempio, un file chiamato css/screen.css
.
Il modo in cui ho risolto è rimuovendo django.contrib.staticfiles.finders.AppDirectoriesFinder
da STATICFILES_FINDERS
e l'utilizzo di namespaced static files dirs, quindi le mie impostazioni ora sembra
STATICFILES_DIRS = (
os.path.join(PROJECT_PATH, 'project_static'),
('my_app', os.path.join(PROJECT_PATH, 'my_app', 'static')),
('another_app', os.path.join(PROJECT_PATH, 'another_app', 'static')),
...
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
)
Il problema è che in questo modo perdo i file statici per tutte le altre applicazioni, per istanza django.contrib.admin
. Ovviamente potrei aggiungere manualmente l'amministratore, ma non sono sicuro di come farlo senza rompere l'amministratore, che ha una diversa struttura di directory.
C'è un modo migliore per gestire i file statici con più di un'applicazione?
se serviamo i file statici usando nginx è ancora questo il modo preferito? (mantenendo i file statici, i modelli nell'app stessa) – Dineshkumar
Sì. Vuoi che tutte le tue risorse siano gestite con il tuo progetto. –