2012-04-16 27 views
7

To jest nowa struktura projektu (z uwag do wydania Django 1.4).Struktura folderów statycznych w Django 1.4?

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

Co nie jestem pewien, czy powinienem zwrócić STATIC_ROOT do

myproject/myproject/static/ (wraz z settings.py, urls.py ...)

LUB

Katalog najwyższego poziomu myproject/static (obok myproject, myapp1, myapp2)?

+3

Nie wiem, co to jest "oficjalne" słowo, ale myślę, że katalog najwyższego poziomu ma więcej sensu. – agf

Odpowiedz

7

STATIC_ROOT nie jest powiązany z importowaniem w Pythonie, więc całkowicie zależy od Ciebie. Zwykle łatwiej jest ustawić w ustawieniach myproject/static/, a więc os.path.join(PROJECT_ROOT, 'static/').

aktualizacja jak sugeruje San4ez i notatki wewnątrz 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/" 

lepiej umieścić pliki statycznych aplikacji poll do poll/static/, w zależności od struktury.

2

Zgadzam się z @okm, że myproject/static/ to dobre miejsce na statyczne, ale można również przechowywać obrazy, css i js wewnątrz aplikacji w myproject/polls/media. Niż trzeba skonfigurować django.contrib.staticfiles aplikację i skopiować statyczny z media do STATIC_ROOT z poleceniem

python manage.py collectstatic 

Zaletą tego podejścia, że ​​ta pozwala rozprzestrzeniać swoją aplikację z statyczne i aplikacja może być swobodnie wykorzystywane w innych projektach

+0

css, js i obrazy powinny być podfolderami w myproject/myproject/static, a także myproject/poll/static. Używanie folderu o nazwie 'media' jest niebezpieczne, ponieważ powoduje konflikt z nazwą folderu używaną zwykle w django do obrazów i innych plików przesłanych przez użytkowników. Jest to również folder używany przez statyczne pliki administracyjne (po kolekcjonowaniu). Zbieraj statyczne pliki, które faktycznie zbierają je do serwera produkcyjnego, aby następnie wyświetlać je z folderu centralnego (zwykle poza strukturą folderu myproject, na przykład /var/www/www.mysite.com/static). – hobs

1

STATIC_ROOT to ścieżka do pliku, w której aplikacja contrib staticfiles zbiera i deponuje wszystkie pliki statyczne. Jest to miejsce do zbierania przedmiotów, to wszystko. Kluczową sprawą jest to, że ta lokalizacja to tymczasowe przechowywanie i jest używana głównie podczas pakowania aplikacji do wdrożenia.

W staticfiles wyszukiwania App dla przedmiotów do zbierania z dowolnego katalogu o nazwie static w dowolnych aplikacjach, które są wymienione w INSTALLED_APPS a ponadto żadnych dodatkowych miejscach ścieżka do pliku wymienionych w STATICFILES_DIRS.

Dla moich projektów tworzę katalog deploy, w którym utworzę folder www, którego używam dla plików statycznych, oraz różne inne pliki używane tylko podczas wdrażania. Ten katalog znajduje się na najwyższym poziomie projektu.

Można skierować zmienną do dowolnej lokalizacji, do której użytkownik ma uprawnienia do zapisu, nie musi znajdować się w katalogu projektu.