Dato che le persone già sottolineato, si dovrebbe mettere la vostra direttiva static_dir
prima /.*
modello
Tuttavia, questo non è l'unica cosa che dovete sapere su.
Mettendo questa direttiva nel app.yaml, fate AppEngine server web (che si tratti di sviluppo o server di produzione) di gestire il percorso /static
, ed hai bisogno di tutti i file statici di essere dentro directory statica. Questo significa che si dovrà eseguire python manage.py collectstatic
ogni volta che si cambia nulla nei file statici (soprattutto se avete/utilizzate applicazioni con file statici - come, ad esempio, o admin
django-tinymce
) solo per testare le modifiche sul server locale
Quindi come evitarlo? Per impostazione predefinita, staticfiles fornisce agli helper il servizio di questi file sul server di sviluppo senza eseguire collectstatic ogni volta, il problema è il conflitto del nome della directory descritta nel paragrafo precedente: Django non riesce a catturare richieste sul percorso dei file statici, poiché vengono gestiti da appserver. È possibile risolverlo utilizzando strade diverse sul server di sviluppo e produzione:
# in settings.py
if DEBUG:
STATIC_URL = '/devstatic/'
else:
STATIC_URL = '/static/'
(djangoappengine imposta DEBUG True sul server di sviluppo). Puoi lasciare ADMIN_MEDIA_PREFIX = '/static/admin/'
, ma ricordarsi di eseguire collectstatic almeno una volta prima di usare amministratore
Naturalmente ricordarsi di utilizzare {{ STATIC_URL }}path/to.css
nei modelli invece di /static/path/to.css
Oh, e presumo che a distinguere la directory per i file statici originali voi lavorare su e la directory in cui devono essere raccolti i file statici. Io uso questo nel mio settings.py:
STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'sitestatic')
STATICFILES_DIRS = (
os.path.join(os.path.dirname(__file__), 'static'),
)
Ciò significa: mettete i vostri fiels statici in static
dir (e in static
dirs tue app), collectstatic
li raccoglie in sitestatic
dir.Appropriato direttiva app.yaml
è
- url: /static
static_dir: sitestatic
Infine, è possibile configurare app.yaml
di ignorare static
e media
directory durante il caricamento la vostra applicazione, dal momento che tutti i file statici saranno raccolti in e servita dalle sitestatic
. Tuttavia, dovresti impostarlo solo durante il caricamento (altrimenti questi file non saranno disponibili nel server di debug)
Per caso stai mettendo i tuoi modelli lì? –