Wie bereitet man ein Django-Projekt auf zukünftige Änderungen vor?

8

Während ich an meiner ersten django powered Site arbeite, lerne ich ständig neue Dinge und mache alle Arten von Änderungen und Ergänzungen an meinen Apps, während ich gehe. Ich versuche DRY- und Python-Prinzipien zu folgen und schlau in meiner Programmierung zu sein, aber irgendwann muss ich die Seite live mitnehmen und bin mir sicher, dass nicht lange danach etwas Neues und Spannendes in die Pipeline kommen wird und ich es umsetzen will .

Vorbereitung für die Zukunft:

In diesem Sinne, haben die Leute irgendwelche Vorschläge, wie ich meinen Code jetzt so zukunftsfähig wie möglich für diese derzeit unvorhergesehenen / unbekannten Upgrades vorbereiten kann / Ergänzungen zu meiner Codebasis?

Im Nachhinein ist 20/20:

Was hätten Sie gerne von Anfang an getan, das Ihr Leben jetzt leichter gemacht hätte, wenn Ihre Website läuft?

Kleine Dinge, die ich gelernt habe (Beispiele):

  • verwenden Sie UTC als Standardzeitzone (und verwenden Sie datetime.datetime.utcnow() )
  • Verwenden Sie Süden , um zukünftige Datenbankänderungen zu unterstützen (noch nicht, aber es scheint sinnvoll)
  • nicht harte Code-Links in meinen Vorlagen (verwenden Sie get_absolute_url() und Reverse-Lookups)
  • Erstellen Sie eine separate tools -App, um kleine wiederverwendbare TemplateTags und Utility-Funktionen zu enthalten, die ich in zukünftigen Projekten verwenden möchte (keine Notwendigkeit, sie später zu entkoppeln)

Dies sind kleine Tipps, und einige direkt aus den Django-Docs, aber ich denke, dass sie helfen.

Was ist mit dir? Was sind deine Best Practices für eine neue App oder ein neues Projekt, die dich auf die Zukunft vorbereiten?

    
thornomad 22.10.2010, 19:52
quelle

5 Antworten

8
  • Stellen Sie eine Bereitstellung in einer reinen Umgebung mithilfe von virtualenv bereit.
  • Dokumentanforderungen mithilfe einer Pip -Anforderungsdatei.

Ich bin sicher, dass andere ihre Bereitstellungsstrategien vorschlagen werden, aber diese Änderungen waren für mich sehr positiv.

    
scompt.com 19.10.2009 13:35
quelle
7

Lerne und nutze South von Anfang an. Wenn du also wichtige DB-Schemaänderungen vornimmst, hast du bereits ein Migrationstool installiert. Andernfalls werden Sie feststellen, dass Sie am Ende zwei Versionen nebeneinander ausführen, während Sie versuchen herauszufinden, wie die Daten portiert werden sollen, und das wird sehr SEHR chaotisch.

Ссылка

    
Paul McMillan 19.10.2009 20:06
quelle
5

Nicht sicher, wie relevant das außerhalb der wundervollen Welt der Webfaction ist.

Benutze Django aus dem svn-Repository von Django und nicht, was dein Host für dich installiert hat, wenn du eine Django-App erstellst, damit du Django aktualisieren kannst, um Sicherheitsfixes zu erhalten, indem du svn up ausführst.

Ich musste dies vor ein paar Tagen tun, und obwohl es nicht zu schmerzhaft war (entferne die Django-Installation, dann starte einen SVN-Checkout, dann starte Apache neu), es für meine verschiedenen Projekte zu tun war ein bisschen irritierend - wäre viel glücklicher gewesen, einfach svn up auszuführen.

    
Dominic Rodger 19.10.2009 13:14
quelle
4

Hören Sie James Bennett zu: Lesen Sie praktische Django-Projekte, folgen Sie Ссылка . Suche youtube nach seinem djangocon Vortrag über wiederverwendbare Apps. Lies seinen Code (auf bitbucket).

Ein Beispiel für Ratschläge, die ich von ihm erhalten habe: Die Abhängigkeitsinjektion von Ihren Ansichten macht Ihre Apps viel wiederverwendbarer. Ein konkretes Beispiel: Reflektieren Sie diese situationsspezifische Sicht:

%Vor%

mit dieser allgemeinen Ansicht:

%Vor%

Besser noch, geben Sie Ihrer Ansicht einen generischen Namen wie "form_view", benennen Sie Ihre Form "form" anstelle von "login_form" um und geben Sie Ihre Parameter explizit ein. Aber diese Änderungen verändern die Funktionalität und sind daher kein reines Refactoring. Sobald Sie das Refactoring durchgeführt haben, können Sie andere Dinge inkrementell ändern.

    
jcdyer 19.10.2009 21:56
quelle
-2

"etwas wird kommen und ich wünsche mir, ich hätte es früher implementiert"

Das ist die Definition einer guten Seite. Eine, die sich entwickelt und verändert.

"so zukunftsfähig wie möglich?"

Was kann das bedeuten? Um welche konkreten Dinge machen Sie sich Sorgen? Die Technologie verändert sich ständig. Eine gute Seite entwickelt sich ständig weiter. Was möchten Sie verhindern? Möchten Sie technische Veränderungen verhindern? Möchten Sie verhindern, dass sich Ihre Website weiterentwickelt?

Es wird immer Veränderungen geben. Es wird immer verheerende Auswirkungen auf frühere Technologieentscheidungen haben, die Sie getroffen haben.

Sie können die Auswirkungen von Änderungen nicht verhindern, stoppen oder sogar reduzieren, es sei denn, Sie verweigern die Teilnahme an neuen Technologien.

    
S.Lott 19.10.2009 13:16
quelle

Tags und Links