2012-05-29 10 views
5

Ich habe ein Django 1.3 Projekt mit diesen Optionen in settings.pyDjango 1.4 (MEDIA_ROOT, STATIC_ROOT, TEMPLATE_DIRS)

SITE_ROOT = os.path.dirname (os.path.realpath (__ __ Datei))

STATIC_ROOT = os.path.join (SITE_ROOT, 'statische')

MEDIA_ROOT = os.path.join (SITE_R OOT, 'Medien')

TEMPLATE_DIRS = ( os.path.join (SITE_ROOT, 'Vorlagen'),)

Aber in Django 1.4 standardmäßig settings.py bewegt wird in Unterverzeichnis mit Name, der gleich Projektname ist. Aus diesem Grund statische, Medien und Vorlagen Verzeichnisse müssen jetzt im selben Unterverzeichnis verschoben werden?

Ist das, was ich tun muss, oder ändern Sie einfach STATIC_ROOT, MEDIA_ROOT und TEMPLATE_DIRS Optionen?

Ich weiß, dass beide Varianten in Ordnung sind, aber was ist die beste Vorgehensweise dafür in Django 1.4?

Und auch ich weiß, dass jede App eigene Vorlagen und statische Verzeichnisse haben kann.

Und ist es besser, alle anderen Anwendungsverzeichnisse in das gleiche Unterverzeichnis zu legen? Das ist nicht, was geschieht standardmäßig manage.py startapp

+0

Siehe https://docs.djangoproject.com/en/1.4/ref/django-admin/#startapp-appname-destination und https://docs.djangoproject.com/en/1.4/releases/1.4/# updated-default-project-layout-and-manage-py – rantanplan

+0

Ich sah dies, aber glaube nicht, dass es meine Fragen beantwortet. Sie sagen nur, es ist möglich, mit beiden Möglichkeiten zu verwenden –

+1

Oh ok. Nun, es wäre am besten, alle relevanten * operationellen * Code unter 'myproject/myproject' zu setzen und dann' myproject/tests', 'myproject/docs' usw. zu haben. Was die statischen/Medien anbelangt, kommt es darauf an, dass ich normalerweise meine apps autonom/Pluggable, so dass jede meiner Apps einen eigenen "statischen" Ordner hat. – rantanplan

Antwort

7

OK mit dem Schema, das ich verfolge das ist:

myproject/requirements.txt - pip installierbare Pakete

myproject/deployment - Deployment Sachen wie Server-Konfigurationsdateien, Spiele (Dummy-Daten) usw.

myproject/docs - Projekt docs

myproject/tests - Projekts Tests

myproject/myproject - Betriebscode des Projekts (und settings.py, urls.py)

Erweiterungmyproject/myproject Ordner:

myproject/myproject/app1 - eine regelmäßige App (seine spezifische Vorlagen/statische Dateien umfasst)

myproject/myproject/app2 - eine weitere reguläre App (das gleiche wie oben)

myproject/myproject/website - halb spezielle App, per Konvention.

Diese website App Häuser im Grunde 4 Dinge:

1) eine leere models.py (so dass django wird es als eine gültige App betrachten)

2) eine views.py mit dem Eintrittspunkt index Ansicht. Vielleicht einige andere Ansichten, die in keine andere spezifische App passen.

3) a management dir mit benutzerdefinierten django commands, die für das gesamte Projekt gelten.

4) ein templates Verzeichnis, das die 404.html und 505.html hat. Es hat auch ein Unterverzeichnis namens website, das Universal/Base-HTML-Vorlagen enthält, die jede andere App extends, plus die index.html.

5) ein static Verzeichnis mit folgenden Unterverzeichnissen mit den Namen css, js und media für globale statische Dateien.

Nichts exotisches, denke ich. Ich denke, dass die meisten Leute einem ähnlichen Muster folgen, aber ich möchte hier irgendwelche Ineffizienzen mit diesem, wenn überhaupt.

EDIT: in Bezug auf die Einstellungen für die Produktion VS Entwicklung verwende ich das beliebte settings_local Muster, das Sie here lesen kann und wird schließlich führen Sie here, die ein besseres Muster beschreibt.

+0

Was tun Sie für verschiedene Einstellungen für lokale/dev/test/QA/UAT/Produktionsumgebungen, mit dieser Einrichtung? Haben Sie darüber nachgedacht, separate Einstellungen unterhalb des Bereitstellungsverzeichnisses zu platzieren? – Jordan

+0

@ Jordan Ich mache, was die meisten Leute bis vor kurzem taten. Ich habe eine settings_local.py auf der gleichen Ebene wie settings.py. Dann versucht settings.py: from settings_local import * außer: pass'. settings_local.py wird natürlich von meinem VCS ignoriert. Ich denke, dass es heutzutage alternative und bessere Lösungen gibt. Es ist ein ganzes Thema für sich. – rantanplan

+0

Ich mache auch dasselbe wie rantanplan –

Verwandte Themen