Django ist mein Lieblings-Python-Web-Framework. Ich habe andere wie Masten, web2py, nevow und andere ausprobiert.
Aber ich habe TurboGears noch nie mit viel Enthusiasmus gesehen.
Jetzt mit TG2 aus der Beta kann ich es versuchen. Ich würde gerne wissen, was die Vor- und Nachteile im Vergleich zu Django sind.
TG2 hat mehrere Vorteile, die ich für wichtig halte:
Es gibt mehr, aber ich denke, es ist auch wichtig zu wissen, dass Django einige Vorteile gegenüber TG2 hat:
All dies bedeutet, dass es in Django ein bisschen einfacher ist als TG2, aber ich persönlich denke, dass die zusätzliche Kraft und Flexibilität, die Sie bekommen, es wert ist. Aber Ihre Bedürfnisse können immer anders sein.
TG2 nimmt Pylons und ändert einige Standardeinstellungen - Objekt-Dispatching anstelle von Routes und Genshi anstelle von Mako. Sie glauben, dass es nur eine Möglichkeit gibt , damit Apps sich auf die gleiche API für jede TurboGears-Website verlassen können.
>Django verwendet seine eigenen Handler für HTTP, Routing, Templating und Persistenz. Django hat auch eine hervorragende Dokumentation und eine etablierte Community.
TurboGears verwendet standardmäßig die besten Bibliotheken, die anscheinend Einfügen , Objektverteilung, Genshi und SqlAlchemy . Diese Philosophie führt zu einem besseren Allround-Toolset, jedoch mit dem Risiko der Instabilität - weil es bedeutet, dass Rückwärtskompatibilität weggeworfen wird, wenn bessere Bibliotheken auftauchen.
Pros.
Nachteile - Admin ist einfacher (noch keine Inline-Objekte!) - Weniger Apps von Drittanbietern - "App" -System noch in der Herstellung. - Aufgrund seiner Modularität müssen Sie die Dokumentation aus verschiedenen Quellen lesen (SQLAlchemy, Genshi oder Mako, repoze.who, Pylons, etc.)
Ich hatte vor Monaten mit der gleichen Frage zu kämpfen und entschied mich für Turbogears 2 , und meine Argumentation war einfach. "Ich bin neu bei Python, ich möchte es nicht nur für Web-Projekte lernen, sondern als Ersatz für PHP für die Skripterstellung von kleinen Helfern "
Was mir an Django nicht gefiel, sieht für mich wie eine "nahe Plattform" aus. ORM, Templatesystem, Sitzungen, usw. Sie alle sind Djangos
Auf der anderen Seite verwendet Turbogears 2 bereits bekannte offene Plattformen und klebte sie einfach, genau wie Appfuse dies für Java macht
Mit TurboGears 2 lerne ich SQLAlchemy, das ich später für kleine Python-Skripte verwenden kann, oder von der Python-Shell, um allgemeine Aufgaben zu lösen.
Hauptnachteile sind fehlende vollständige Dokumentation und Fehlermeldungen.
Manchmal muss man sehr tief suchen, um einfache Lösungen zu finden, die Lernkurve ist steil, aber es zahlt sich langfristig aus. Die Fehlermeldungen waren für mich sehr verwirrend (kommen aus mehr als 10 Jahren Java-Entwicklung). Ich hatte viele Stunden verloren, als ich versuchte, einen "ascii encode error" zu finden, als das eigentliche Problem darin bestand, dass ein Modul nicht importiert wurde.
Das ist meine Meinung, denkt daran, ich bin neu bei Python und ich könnte mich in vielen Dingen irren, die hier erwähnt werden.
Abgesehen davon, was Nikhil in seiner Antwort gesagt hat, denke ich, ist ein weiterer kleiner Unterschied, dass Turbogears eine gewisse Unterstützung für JavaScript-Widgets und die Integration mit Mochikit . Während Django unerschütterlich javascript-neutral bleibt. (Das galt zumindest für ältere Versionen von TurboGears ... das könnte sich mit TG2 geändert haben) Bearbeiten: Ich bin gerade über die TG2-Dokumentation gegangen und habe gesehen, dass sich das tatsächlich geändert hat. Turbogears verwendet jetzt ToscaWidgets, die darunter jQuery, ExtJS, Dojo usw. verwenden können. Dies macht es schön Framework-neutral, während immer noch nette Javascript Widgets zur Verfügung stellen. Das erscheint mir als pro für TurboGear, wenn Sie keine JavaScript-Erfahrung haben und pro für Django, wenn Sie viel spezialisiertes JavaScript schreiben.
Eine der wichtigsten Fragen ist nicht nur, welche technischen Funktionen diese Plattform bietet oder welche Plattform sie bietet, sondern auch die treibende Philosophie des Open-Source-Projekts und die Art der Community, die es unterstützt.
Ich habe selbst keinen Hund in diesem Kampf, aber ich fand Mark Ramms Vortrag auf der DjangoCon 2008 ist in diesem Punkt sehr interessant (Google wird zweifellos kein Ende der Diskussion haben).
Da Django ein eigenes ORM verwendet, beschränkt es Sie, ORM für dieses spezielle Web-Framework zu lernen. Ich denke, die Verwendung eines Web-Frameworks mit einem populäreren ORM (wie SqlAlchemy, das TG verwendet) erhöht Ihre Chancen auf Beschäftigungsfähigkeit. Nur meine 2 Cent ..
Zuletzt habe ich überprüft, django hat eine sehr schlechte Datenimplementierung. Und das ist eine große Schwäche in meinem Buch. Djangos Orm erlaubt mir nicht, die Macht der zugrunde liegenden Datenbank zu nutzen. Zum Beispiel kann ich keine zusammengesetzten Primärschlüssel verwenden, die für das gute db-Design wichtig sind. Es unterstützt auch nicht mehr als eine einzige Datenbank, was keine große Sache ist, bis Sie es wirklich brauchen und feststellen, dass Sie es nicht tun können, ohne es manuell durchzuführen. Wenn Sie schließlich Ihre Datenbankstruktur teamfreundlich ändern müssen, müssen Sie versuchen, zwischen einer Reihe von Migrationstools von Drittanbietern zu wählen.
Turbogears scheint architektonisch solider zu sein und tut sein Bestes, um individuelle Tools zu integrieren, die für sich selbst genial sind. Und weil TG eher ein Integrator ist, können Sie Stücke nach Ihren Wünschen austauschen. Mag SQL Alchemy nicht? Sie können SQLObject verwenden. Mag ich keine Genshi Vorlagen? Sie können Mako oder sogar Djangos benutzen, obwohl Sie auch nicht mit dem Standard auf Django festgefahren sind.
Zeit für die Nachteile von tg2:
Meine 2 Cent.
Tags und Links python django turbogears turbogears2