2011-08-16 18 views
8

Próbuję zrozumieć strukturę statyczną django 1,3 próbuje realizować:Django struktura statyczna

Mam projektu z tej struktury:

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

Teraz chcesz nadpisać panelu administracyjnym .. Tak muszę ustawić te ustawienia w settings.py, które zrobiłem jak poniżej (BasePath jest ścieżka skrót do bieżącego katalogu):

# 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. 
) 

Jeśli używam manage.py polecenia collectstatic, to Colle cts wszystkie pliki statyczne (w tym pliki administracyjne) w katalogu "statyczny" zgodnie z oczekiwaniami ... (w ramach głównego katalogu projektu)

Jednak zawartość nie jest wyświetlana, dopóki nie doda tego katalogu do krotki STATICFILES_DIRS, jednak muszę zmienić ustawienia katalogu STATIC_ROOT, ponieważ w przeciwnym razie dostanę błąd, który nie może być taki sam ...

Myślę, że przeoczyłem oczywistość, ponieważ to, co muszę zrobić, aby zadziałać, wydaje się zbędne.

+1

Więc ... umieściłeś katalogi, w których twoje pliki są rzeczywiście przechowywane w 'STATIC_DIRS' i wskazują' STATIC_ROOT' na katalog __empty__, gdzie Django może zbierać pliki statyczne? – agf

Odpowiedz

-5

Jak o:

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

Nie jest to dokładnie wadliwa część ... Nieprawidłowo skonfigurowana: Ustawienie STATICFILES_DIRS nie powinno zawierać ustawienia STATIC_ROOT – RoundTripToNowhere

+0

To jawnie podnosi wyjątek z tą opcją! –

4

STATICFILES_DIRS to ustawienie używane do deklarowania plików statycznych nie związanych z aplikacją na żywo w projekcie. STATIC_ROOT to miejsce, w którym pliki statyczne są umieszczane po ich zebraniu.

Od django's docs:..

„Twój projekt będzie prawdopodobnie również posiadać aktywa statyczne, które nie są przypisane do konkretnej aplikacji Ustawienie STATICFILES_DIRS jest krotką katalogów systemu plików, aby sprawdzić podczas ładowania plików statycznych Jest to ścieżka wyszukiwania jest domyślnie pusty. Zobacz dokumenty STATICFILES_DIRS, jak rozszerzyć tę listę dodatkowych ścieżek. "

"Ustaw parametr STATIC_ROOT tak, aby wskazywał ścieżkę do systemu plików, w której chcesz gromadzić pliki statyczne, gdy używasz polecenia zarządzania zbiorczego."

10

rozwoju lokalnego, spróbuj tej struktury

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

Mając to na 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'), 
) 

Uruchom serwer lokalny z python manage.py runserver i przejdź do http://localhost:8000/static/base.css

powinien pojawić się stylów.