Ich habe dafür gegoogelt, aber ich habe immer noch Probleme damit, was Django als "Apps" definiert.
Sollte ich für jede Funktionalität einer Site eine neue App erstellen, obwohl Modelle aus dem Hauptprojekt verwendet werden?
Habt ihr eine gute Faustregel, wann eine neue App abgespalten werden soll und wann die Funktionalität zusammen mit dem "Hauptprojekt" oder anderen Apps erhalten bleiben soll?
Ich stelle mir Django-Anwendungen lieber als wiederverwendbare Module oder Komponenten als als "Anwendungen" vor.
Dies hilft mir, bestimmte Funktionen zu kapseln und voneinander zu entkoppeln, und verbessert die Wiederverwendbarkeit, falls ich mich entscheide, eine bestimmte "App" für die gesamte Community freizugeben, sowie die Wartbarkeit.
Mein allgemeiner Ansatz besteht darin, bestimmte Funktionen oder Funktionssätze in "Apps" zu integrieren, als würde ich sie öffentlich veröffentlichen. Der schwierige Teil hier ist herauszufinden, wie groß jeder Eimer ist.
Ein guter Trick, den ich benutze, ist sich vorzustellen, wie meine Apps verwendet würden, wenn sie öffentlich veröffentlicht würden. Dies ermutigt mich oft, die Eimer zu verkleinern und ihren "Zweck" klarer zu definieren.
quelle
Hier ist die aktualisierte Präsentation am 6. September 2008.
DjangoCon 2008: Wiederverwendbare Apps @ 7: 53
Folie: Reusable_apps.pdf
quelle
Ich neige dazu, neue Anwendungen für jeden logisch getrennten Satz von Modellen zu erstellen. z.B:
quelle
Die Regel, der ich folge, ist, dass es eine neue App sein sollte, wenn ich die Funktionalität in einem anderen Projekt wiederverwenden möchte.
Wenn es ein tiefes Verständnis der Modelle in Ihrem Projekt erfordert, ist es wahrscheinlich kohärenter, es an den Modellen festzuhalten.
quelle
Die zwei besten Antworten auf diese Frage, die ich im Internet gefunden habe, sind:
Beide Quellen sind sich einig, dass Sie in den folgenden Situationen eine separate App erstellen sollten:
quelle
Eine 'App' kann viele verschiedene Dinge sein, es kommt wirklich auf den Geschmack an. Angenommen, Sie erstellen ein Blog. Ihre App kann das gesamte Blog sein, oder Sie können eine 'Admin'-App, eine' Site'-App für alle öffentlichen Ansichten, eine 'RSS'-App, eine' Services'-App haben, damit Entwickler mit dem Blog in ihrem Blog kommunizieren können eigene Wege usw.
Ich persönlich würde den Blog selbst zur App machen und die darin enthaltenen Funktionen aufteilen. Der Blog könnte dann ziemlich einfach auf anderen Websites wiederverwendet werden.
Das Schöne an Django ist, dass es jede Datei models.py in jeder Ebene Ihres Verzeichnisbaums als Datei mit Django-Modellen erkennt. Die Aufteilung Ihrer Funktionalität in kleinere "Unter-Apps" innerhalb einer "App" selbst wird also nichts schwieriger machen.
quelle