2011-08-16 13 views
8

Sto cercando di capire la struttura statica Django 1.3 cerca di perseguire:Django struttura statica

Ho un progetto con questa struttura:

Project 
    someapp 
     static 
      someapp 
      css 
      etcetera 
     models.py 
     views.py 
     urls.py 
    urls.py 
    manage.py 
    settings.py 

Ora desidero sovrascrivere l'amministratore Django .. Quindi devo impostare queste impostazioni in settings.py che ho fatto come qui di seguito (BasePath è il percorso di scelta rapida per la directory corrente):

# 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/" 
STATIC_ROOT = BASE_PATH+'/static/' 

# URL prefix for static files. 
# Example: "http://media.lawrence.com/static/" 
STATIC_URL = '/static/' 

# URL prefix for admin static files -- CSS, JavaScript and images. 
# Make sure to use a trailing slash. 
# Examples: "http://foo.com/static/admin/", "/static/admin/". 
ADMIN_MEDIA_PREFIX = '/static/admin/' 

# Additional locations of static files 
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
) 

Se uso il comando collectstatic manage.py, Colle cts tutti i file statici (inclusi i file di amministrazione) in una directory 'static' come previsto ... (all'interno della dir principale del progetto)

Tuttavia il contenuto non è ancora stato servito fino a quando non aggiungo quella directory alla tupla STATICFILES_DIRS, comunque devo modificare l'impostazione della directory STATIC_ROOT perché altrimenti otterrò l'errore non possono essere uguali ...

Penso di non avere l'ovvio perché quello che devo fare per farlo funzionare sembra ridondante

+1

Quindi .. hai messo le directory in cui i tuoi file sono effettivamente memorizzati in 'STATIC_DIRS' e punti' STATIC_ROOT' in una __empty directory__ dove Django può raccogliere i file statici? – agf

risposta

-5

ne dite:

STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static". 
    # Always use forward slashes, even on Windows. 
    # Don't forget to use absolute paths, not relative paths. 
    STATIC_ROOT, 
) 
+1

No, è esattamente la parte difettosa ... ImproprialyConfigured: L'impostazione STATICFILES_DIRS non deve contenere l'impostazione STATIC_ROOT – RoundTripToNowhere

+0

Solleva esplicitamente un'eccezione con questa opzione! –

4

STATICFILES_DIRS è un'impostazione che si utilizza per dichiarare i file statici non specifici dell'app in diretta nel progetto. STATIC_ROOT è il punto in cui i file statici vengono posizionati quando vengono raccolti.

Da django's docs:..

"Il progetto avrà probabilmente anche le attività statiche che non sono legati a una particolare applicazione L'impostazione STATICFILES_DIRS è una tupla di directory del file system per verificare durante il caricamento di file statici Si tratta di un percorso di ricerca è di default vuoto. Vedi i documenti STATICFILES_DIRS come estendere questo elenco di percorsi aggiuntivi. "

"Impostare l'impostazione STATIC_ROOT in modo che punti al percorso del filesystem che si desidera raccogliere i file statici quando si utilizza il comando di gestione collectstatic."

10

per lo sviluppo locale, provate questo struttura

Project 
    Project (project directory with settings.py etc..) 
     stylesheets 
    someapp 
    static 
     base.css 

Con questo in settings.py:

import os 
ROOT_PATH = os.path.dirname(__file__) 
STATIC_ROOT = os.path.join(ROOT_PATH, 'static') 
STATIC_URL = '/static/' 
STATICFILES_DIRS = (
    os.path.join(ROOT_PATH, 'stylesheets'), 
) 

eseguire il server locale con python manage.py runserver e andare a http://localhost:8000/static/base.css

Si dovrebbe vedere il foglio di stile.

Problemi correlati