2012-04-16 12 views
7

Questa è la nuova struttura del progetto (dalle note sulla versione di Django 1.4).Struttura delle cartelle statiche in Django 1.4?

 
myproject 
|-- manage.py 
|-- myproject 
| |-- __init__.py 
| |-- settings.py 
| |-- urls.py 
| `-- wsgi.py 
`-- polls 
    |-- __init__.py 
    |-- models.py 
    |-- tests.py 
    `-- views.py 

Quello che non sono sicuro circa è se dovrei puntare STATIC_ROOT a

myproject/myproject/static/ (insieme a settings.py, urls.py ...)

O

La directory di livello superiore myproject/static (accanto a myproject, myapp1, myapp2)?

+3

Non so quale sia la parola "ufficiale", ma penso che la directory di primo livello abbia più senso. – agf

risposta

7

STATIC_ROOT non è correlato all'importazione di Python, quindi dipende totalmente da te. Normalmente, myproject/static/, quindi os.path.join(PROJECT_ROOT, 'static/') nelle impostazioni, è più semplice.

aggiornamento come suggerito San4ez, e le note all'interno settings.py

# Absolute path to the directory static files should be collected to. 
# Don't put anything in this directory yourself; store your static files 
# in apps' "static/" subdirectories and in STATICFILES_DIRS. 
# Example: "/home/media/media.lawrence.com/static/" 

meglio mettere i file statici della poll applicazione in poll/static/, secondo la vostra struttura.

2

Sono d'accordo con @okm che myproject/static/ è un buon posto per statico, ma è anche possibile memorizzare immagini, css e js all'interno della tua app in myproject/polls/media. Che è necessario configurare django.contrib.staticfiles app e copia statica da media a STATIC_ROOT con il comando

python manage.py collectstatic 

Il vantaggio di questo approccio che questo permette di diffondere la vostra applicazione con statico e la vostra applicazione può essere usata liberamente in altri progetti

+0

css, js e le immagini dovrebbero essere tutte sottocartelle in myproject/myproject/static, oltre a myproject/poll/static. L'utilizzo di una cartella denominata 'media' è pericoloso perché è in conflitto con il nome della cartella generalmente utilizzato in django per immagini e altri file caricati dagli utenti. È anche una cartella utilizzata dai file statici di amministrazione (dopo collectstatic). Raccogliete le statiche in effetti le raccoglierete per un server di produzione per poi servirle da una cartella centrale (di solito al di fuori della struttura della cartella myproject, come /var/www/www.mysite.com/static). – hobs

1

STATIC_ROOT è solo un percorso file in cui l'app contributor staticfiles raccoglie e deposita tutti i file statici. È un luogo dove raccogliere oggetti, tutto qui. L'aspetto chiave è che questa posizione è la memoria temporanea e viene utilizzata principalmente quando si impacchetta l'app per la distribuzione.

Le ricerche staticfiles app per gli articoli per raccogliere da qualsiasi directory denominata static in tutte le applicazioni che sono elencati nella INSTALLED_APPS e in aggiunta tutte le posizioni di percorso extra file elencati STATICFILES_DIRS.

Per i miei progetti creo una directory deploy in cui creo una cartella www che utilizzo per i file statici e vari altri file utilizzati solo durante la distribuzione. Questa directory è al livello più alto del progetto.

È possibile puntare la variabile in qualsiasi posizione in cui l'utente disponga delle autorizzazioni di scrittura, non è necessario che sia presente nella directory del progetto.