2012-04-16 15 views
7

Dies ist die neue Projektstruktur (aus den Django 1.4 Release Notes).Statische Ordnerstruktur 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 

Was ich nicht sicher bin, ob ich STATIC_ROOT zu

myproject/myproject/static/ (zusammen mit settings.py, urls.py ...) anweisen

ODER

Das oberste Verzeichnis myproject/static (neben meinem Projekt, myapp1, myapp2)?

+3

Ich weiß nicht, was das "offizielle" Wort ist, aber ich denke, das Top-Level-Verzeichnis macht mehr Sinn. – agf

Antwort

7

STATIC_ROOT ist nicht im Zusammenhang mit Python importiert, so dass es völlig von Ihnen abhängt. Normalerweise ist myproject/static/, also os.path.join(PROJECT_ROOT, 'static/') in Einstellungen, einfacher.

Update als San4ez vorgeschlagen und Notizen innerhalb 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/" 

Bessere statische Dateien des poll App in poll/static/ zu setzen, entsprechend Ihre Struktur.

2

ich mit @okm einig, dass myproject/static/ ein guter Platz für statisch ist, sondern auch können Sie Bilder speichern, css und js in Ihrer App in myproject/polls/media. Als Sie von mediadjango.contrib.staticfiles App und kopieren statisch konfigurieren, mit dem Befehl STATIC_ROOT

python manage.py collectstatic 

Der Vorteil dieses Ansatzes, dass dies ermöglicht es Ihnen, Ihre Anwendung mit statischen und Ihre App zu verbreiten können in anderen Projekten frei genutzt werden

+0

css, js und images sollten alle Unterordner in myproject/myproject/static sowie myproject/poll/static sein. Die Verwendung eines Ordners mit dem Namen 'media' ist gefährlich, da er mit dem Ordnernamen kollidiert, der normalerweise in django für Bilder und andere von Benutzern hochgeladene Dateien verwendet wird. Es ist auch ein Ordner, der von statischen Admin-Dateien verwendet wird (nach Collectstatic). Collect static sammelt sie tatsächlich für einen Produktionsserver, um sie dann von einem zentralen Ordner (normalerweise außerhalb Ihrer myproject-Ordnerstruktur wie /var/www/www.mysite.com/static) zu bedienen. – hobs

1

STATIC_ROOT ist nur ein Dateipfad, in dem die staticfiles Contrib-App alle statischen Dateien sammelt und ablegt. Es ist ein Ort, um Gegenstände zu sammeln, das ist alles. Der Schlüssel ist, dass dieser Standort temporären Speicher ist und hauptsächlich beim Packen Ihrer App für die Bereitstellung verwendet wird.

Die staticfiles App sucht nach Artikeln aus einem beliebigen Verzeichnis static sammeln in beliebigen Anwendungen genannt, die in INSTALLED_APPS und zusätzlich irgendwelche zusätzlichen Dateipfad Standorte aufgelistet in STATICFILES_DIRS aufgeführt sind.

Für meine Projekte erstelle ich ein deploy Verzeichnis, in dem ich einen www Ordner erstellen, den ich für statische Dateien verwende, und verschiedene andere Dateien, die nur bei der Bereitstellung verwendet werden. Dieses Verzeichnis befindet sich auf der obersten Ebene des Projekts.

Sie können die Variable auf einen beliebigen Speicherort verweisen, für den Ihr Benutzer Schreibberechtigungen hat. Er muss sich nicht im Projektverzeichnis befinden.