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 .
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?
Was hätten Sie gerne von Anfang an getan, das Ihr Leben jetzt leichter gemacht hätte, wenn Ihre Website läuft?
datetime.datetime.utcnow()
) get_absolute_url()
und Reverse-Lookups) 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?
Ich bin sicher, dass andere ihre Bereitstellungsstrategien vorschlagen werden, aber diese Änderungen waren für mich sehr positiv.
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.
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.
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.
"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.