Frage

Ich habe versucht, so ziemlich jeden Python-Web-Framework, das, und es dauerte eine lange Zeit zu erkennen, gibt es kein Allheilmittel Rahmen, jeder hatte seine eigenen Vor- und Nachteile besteht. Ich begann mit Snakelets und genossen von Herzen der Lage, ohne viel auf einem niedrigeren Niveau fast alles zu kontrollieren Aufregung, aber dann entdeckte ich Turbogears und ich benutze es (1.x) seitdem. Tools wie Catwalk und die Webkonsole sind von unschätzbarem Wert für mich.

Aber mit Turbogears 2 kommen die WSGI Unterstützung bringt, und nach auf die religiösen Debatten zwischen dem Django Lesen und WSGI Lagern, bin ich wirklich hin- und hergerissen zwischen „es richtig tun“ , zum Beispiel des Lernen WSGI, wertvolle Zeit Funktionalität zu schreiben, die Rahmenbedingungen in Django und anderen Full-Stack bereits vorhanden ist, im Gegensatz zur Verwendung von Django oder einen High-Level-Framework, das alles für mich tut. Die Nachteile mit diesem, die ich sehen kann, liegen auf der Hand:

  1. Ich bin nicht alles in dem Prozess lernen
  2. Wenn ich jemals brauche etwas niedrigeres Niveau zu tun, es ist ein Schmerz sein wird
  3. Der Aufwand für nur eine einfache Website erforderlich, die Authentifizierung verwendet, ist verrückt. (IMO)

Also, ich denke, meine Frage ist, was die bessere Wahl ist, oder ist es nur eine Frage der Meinung, und soll ich es aufzusaugen und Django verwenden, wenn es erreicht, was ich mit minimalem Aufwand will (ich will Authentifizierung und eine CRUD-Schnittstelle zu meiner Datenbank)? Ich habe versucht, Werkzeug, Glashammer und Freunde, aber AuthKit und Repoze erschrecken mich weg, sowie die Anzahl der Schritte, um nur Setup-Basic-Authentifizierung beteiligt. Ich schaute auf Pylonen, aber die Dokumentation scheint fehlt, und wenn Referenzierung einfache Funktionen wie Authentifizierung oder eine CRUD-Schnittstelle, schienen verschiedene Wiki-Seiten und Dokumentation, sich zu widersprechen, mit verschiedenen Hacks für die Versionen und so.


Dank S. Lott für den Hinweis auf, dass ich nicht klar genug war. Meine Frage ist: Welche der folgenden lohnt sich auf lange Sicht, aber nicht schmerzhaft in der kurzen (zum Beispiel eine Art Mittelweg, anyone?) - Lernen WSGI, oder Stick mit einem „Batterien Inklusions“ Rahmen? Wenn letzteres, würde ich einen Vorschlag zu schätzen wissen, ob ich Django einen neuen Versuch geben soll, Stick mit Turbogears 1.x oder in einen anderen Rahmen wagen.

Auch ich habe CherryPy versucht, aber scheinen kann nicht gut genug CRUD Anwendung zu finden, die ich plop könnte und sofort nutzen.

War es hilfreich?

Lösung

Ich schlage vor, einen anderen Blick auf TG2. Ich glaube, die Leute sind gescheitert einige der Schritte zu bemerken, die seit der letzten Version vorgenommen wurden. Abgesehen von dem wachsenden WSGI Stapel Dienstprogramme zur Verfügung gibt es durchaus ein paar TG2 spezifischen Elemente zu berücksichtigen. Hier sind ein paar Highlights:

Turbogears Administration System - Diese CRUD-Schnittstelle zur Datenbank ist vollständig anpassbare eine deklarative Config-Klasse. Es ist auch mit Dojo integriert man unendlich rollbaren Tischen zu geben. Server-seitige Validierung ist ebenfalls automatisiert. Das Admin-Interface verwendet RESTful URLs und HTTP-Verben, was bedeutet es einfach, programmatisch zu verbinden wäre Industriestandards.

CrudRestController / RestController - Turbogears bietet eine strukturierte Art und Weise Dienste in Ihrem Controller zu behandeln. Sofern Sie die Möglichkeit, einfach standardisierte HTTP-Verben zu verwenden, indem Sie unsere RestController erstreckt. Kombinieren Sie Sprox mit CrudRestController, und Sie können crud setzen überall in Ihrer Anwendung mit vollständig anpassbaren automatisch generierten Formen. Turbogears unterstützt jetzt mime-Typen wie Dateierweiterungen in der URL, so können Sie Ihren Controller .json machen haben und .xml mit derselben Schnittstelle verwendet es html (Rückkehr ein Wörterbuch von einem Controller)

zu machen

Wenn Sie auf die Links klicken Sie werden sehen, dass wir eine neue Serie von Dokumenten haben mit Sphinx gebaut, die umfangreicher als die Dokumentation der Vergangenheit ist.

Mit dem besten Webserver , ORM und Template-System (e) (eigene Auswahl) unter der Haube, es ist leicht einzusehen, warum TG Sinn für die Menschen macht, die schnell loslegen wollen, und haben immer noch die Skalierbarkeit als ihre Website wächst.

Turbogears wird oft als Versuch gesehen ein sich bewegendes Ziel zu treffen, aber wir sind konsistent über Meldungen, die bedeutet, dass Sie nicht über die Arbeit aus dem Kofferraum sorgen müssen, um die neuesten Funktionen, die Sie benötigen. Kommen in die Zukunft:. Weitere Erweiterungen Turbogears, die Ihre Anwendung ermöglicht Funktionalität mit der Leichtigkeit der Paster Befehle zu wachsen

Andere Tipps

  

die religiösen Debatten zwischen den Django und WSGI Lager

Es scheint, als ob Sie ein bisschen etwas verwirrt darüber sind, was WSGI ist und was Django ist. Zu sagen, dass Django und WSGI konkurrieren ist ein bisschen wie wenn man sagt, dass C und SQL konkurrieren. Sie vergleichen Äpfel und Orangen

Django ist ein Rahmen, WSGI ein Protokoll ist (die von Django unterstützt wird), wie der Server mit dem Rahmen zusammenwirkt. Am wichtigsten ist, direkt zu verwenden WSGI Lernen ist ein bisschen wie Montage zu lernen. Es ist eine großartige Lernerfahrung, aber es ist nicht wirklich etwas, das Sie für die Produktion Code tun soll (noch war es sein sollte).

Auf jeden Fall mein Rat ist, es selbst herauszufinden. Die meisten Frameworks haben eine „macht ein Wiki / Blog / Umfrage in einer Stunde“ Art Übung. Verbringen Sie ein wenig Zeit mit jedem und herauszufinden, welche Ihnen am besten gefällt. Denn wie können Sie zwischen verschiedenen Rahmenbedingungen entscheiden, ob Sie nicht bereit sind, sie auszuprobieren?

Ich würde sagen, Sie ein wenig zu pessimistisch sind sein „nichts lernen“ mit Django oder einen ähnlichen Full-Stack-Framework und den Wert der Dokumentation und eine große Gemeinschaft zu unterschätzen. Auch bei Django gibt es nach wie vor eine erhebliche Lernkurve; und wenn sie nicht alles tun, Sie wollen, es ist nicht wie der Framework-Code ist undurchdringlich.

Einige persönliche Erfahrung: Ich verbrachte Jahre, ein und aus, Herumspiele mit Verdrehte / Nevow, Turbogears und ein paar anderen Python Web-Frameworks. Ich beendete nie etwas, weil der Framework-Code ewig unvollendeten war und unter mir neu geschrieben wurde, war die Dokumentation oft nicht vorhanden oder falsch ist und die einzig gangbare Unterstützung war über IRC (wo ich oft gute Ratschläge bekommen, aber fühlte sich wie ich zur Einführung wurde, wenn ich auch gefragt viele Fragen).

Zum Vergleich: In den letzten paar Jahren habe ich ein paar Seiten mit Django abgeschlagen. Im Gegensatz zu meinen früheren Erfahrungen, sind sie tatsächlich eingesetzt und ausgeführt wird. Der Django-Entwicklungsprozess kann langsam und vorsichtig sein, aber es führt zu viel weniger bitrot und deprecation und Dokumentation, die tatsächlich hilfreich ist.

HTTP-Authentifizierung Unterstützung für Django ging schließlich in vor ein paar Wochen, wenn das ist, was Sie‘ re unter Bezugnahme auf in # 3.

Ihre Frage scheint „ist es wert Lernen WSGI und tun alles selbst“, oder mit einem als „Fullstack-Framework, das alles für Sie.“

Ich würde sagen, das ist eine falsche Dichotomie und es gibt einen offensichtlichen dritten Weg. Turbogears 2 versucht, einen glatten Weg von einem „für Sie tun alles“ zu schaffen Stil Rahmen bis zu einem Verständnis von WSGI Middleware, und die Fähigkeit, fast jeden Aspekt des Rahmens anpassen, um Ihrer Anwendung Bedürfnisse anzupassen.

Wir können auf jeder Ebene in jedem Ort nicht erfolgreich sein, aber vor allem, wenn Sie bereits einige Turbogears-1-Erfahrung habe ich denke, die TG2 Einarbeitungszeit wird sehr, sehr einfach auf den ersten, und Sie werden die Möglichkeit haben, zu gehen tiefer genau dann, wenn Sie es brauchen.

Um Ihre speziellen Themen behandelt werden:

  • Wir bieten ein Genehmigungssystem aus dem Kasten, der die übereinstimmt Sie von TG1 gewohnt sind.
  • Wir bieten eine Out of the box "django admin" wie Schnittstelle der tgext.admin genannt, die mit Dojo funktionieren gut den Standard eine Phantasie-Tabelle wie Schnittstelle zu machen.

Ich würde auch ein paar von den anderen Optionen ansprechen möchte, die es gibt und ein wenig über die benifits sprechen.

  • CherryPy. Ich denke, CherryPy ein großer Webserver ist und ein schöner minimalistischer Web-Framework. Es basiert nicht auf WSGI intern aber hat die Unterstützung gut WSGI obwohl es Sie mit der „Full-Stack“ Erfahrung nicht bieten. Aber für benutzerdefinierte Konfigurationen, die sowohl schnell sein müssen und sind nicht besonders geeignet, um die vorgegebenen Standardeinstellungen von Django oder Turbogears, es ist eine großartige Lösung.

  • Django. Ich denke, Django ist ein sehr schönes, tigtly integriertes System für Websites zu entwickeln. Wenn Ihre Anwendung und Arbeitsstil passt gut in das Standard-Setup ist kann es fantastisch sein. Wenn Sie jedoch Ihre DB Nutzung abzustimmen müssen, die Template-Sprache ersetzen, ein anderes Benutzerberechtigungsmodell verwenden oder auf andere Weise tun Dinge anders können Sie sehr wahrscheinlich selbst den Rahmen der Bekämpfung finden.

  • Pylone Pylone wie CherryPy ist ein großer minimalistischer Web-Framework. Im Gegensatz zu CherryPy ist es WSGI durch das gesamte System aktiviert und bietet einige vernünftige Default wie SQLAlchemy und Mako, die Sie gut skalieren helfen können. Die neuen offiziellen Dokumente sind von viel besserer Qualität als die alten Wiki-Dokumente, die sind, was Sie betrachtet zu haben scheinen.

Haben Sie einen Blick auf CherryPy genommen. Es ist minimalistisch, aber effizient und einfach. Es ist niedriges Niveau genug für sie nicht Art und Weise in ihnen zu bekommen, aber hoch genug, um die Komplexität zu verstecken. Wenn ich mich recht erinnere, wurde Turbogears darauf gebaut.

Mit CherryPy, haben Sie die Wahl von viel alles. (Template Framework, ORM, wenn gewünscht, Back-End-usw.)

  

Erfahren WSGI

WSGI ist absurd einfach .. Es ist im Grunde eine Funktion, die wie ..

sieht
def application(environ, start_response) pass

Die Funktion wird aufgerufen, wenn eine HTTP-Anforderung empfangen wird. environ enthält verschiedene Daten (wie die Anforderungs-URI etc etc), start_response ist eine aufrufbare Funktion, verwendet headers einzustellen.

Der Rückgabewert ist der Körper der Website.

def Anwendung (environ, start_response):     start_response ( "200 OK", [])     return "..."

Das ist alles, was es ist, wirklich .. Es ist kein Rahmen, sondern mehr ein Protokoll für die Web-Frameworks zu verwenden ..

zum Erstellen von Websites, WSGI verwendet, ist nicht der „richtige Weg“ - bestehendes Frameworks ist .. aber, wenn Sie einen Python-Web-Framework schreiben dann WSGI verwenden, ist absolut der richtige Weg. .

Welches Rahmen Sie verwenden (CherryPy, Django, Turbogears usw.) ist grundsätzlich persönliche Präferenz .. Spiele in jedem herum, die wie Sie am meisten, dann verwenden .. Es ist eine Frage Stackoverflow (mit einer großen Antwort) über dazu "Empfehlung für Straight-Forward-python-Frameworks"

Haben Sie web2py ausgecheckt? Nachdem vor kurzem viele Python Web-Frameworks vor kurzem habe ich beschlossen, die Bewertung dieses zu übernehmen. Überprüfen Sie auch, Google App Engine, wenn Sie nicht bereits.

Ich würde sagen, die richtige Antwort hängt davon ab, was Sie wirklich wollen und brauchen, wie das, was sich lohnen wird auf lange Sicht hängt davon ab, was Sie auf lange Sicht benötigen. Wenn Ihr Ziel ist es, Anwendungen eingesetzt werden so schnell wie möglich dann dem ‚einfacheren‘ Weg, das heißt. Django, ist sicherlich der Weg zu gehen. Der Wert eines gut getestet und gut dokumentierte System, das genau das, was Sie wollen, nicht unterschätzt werden.

Auf der anderen Seite, wenn Sie Zeit haben, eine Vielzahl von neuen Dingen zu lernen, die in anderen Bereichen anwenden können und den weitesten Umfang, die individuell gestaltet haben wollen dann so etwas wie Turbogears ist überlegen. Turbogears gibt Ihnen ein Maximum an Flexibilität, aber Sie wird haben viel Zeit mit dem Lesen externen docs für Dinge wie Repoze, SQLAlchemy und Genshi zu verbringen, etwas Sinnvolles getan, mit ihm zu bekommen. Die TG2 docs sind bewusst weniger detailliert als die TG1 docs in einigen Fällen, weil es in Betracht gezogen, dass die externen Dokumente besser als früher sein. Ob diese Art der Sache ist ein Hindernis oder eine Investition hängt von Ihren eigenen Anforderungen.

Django ist definitiv wert Lernen, und es klingt wie es Ihre Zwecke passen. Die Admin-Interface kommt es mit einfach aufstehen und laufen, und es nicht verwendet Authentifizierung.

Wie bei „etwas niedrigeren Niveau“, wenn Sie SQL bedeuten, ist es durchaus möglich, SQL zu schieben in Sie mit dem zusätzlichen Schlüsselwort abfragt. Stilistisch Sie immer versuchen, diese so weit wie möglich zu vermeiden.

Wie bei „nicht etwas zu lernen“ ... die eigentliche Frage ist, ob Sie lieber in erster Linie ist etwas niedrigere Ebene oder auf höhere Ebene zu lernen, die hier kaum eine Frage jemand für Sie beantworten.

Pylone scheint ein großes Werkzeug für mich:

  • ein echten Web-Framework (CherryPy ist nur ein Web-Server),
  • kleine Code-Basis - Wiederverwendung von anderen Projekten,
  • geschrieben vollständig mit WSGI im Auge, basierend auf Paste,
  • können Sie die App direkt codieren und die niedrigen Pegel Bits berühren, wenn es notwendig ist,

Ich habe CherryPy und Turbogears und Blick auf vielen anderen Frameworks verwendet, aber keiner von ihnen war so leicht und produktiv wie Pylons sind. Schauen Sie sich die Präsentation bei Google .

Ich bin ein Fan Turbogears, und das ist genau der Grund, warum: a. Sehr schön Kompromiss zwischen Kontrolle und die Dinge richtig tun vs. einfach

Du musst deinen eigenen Geist natürlich nachholen. Vielleicht möchten Sie lieber weniger lernen, vielleicht auch mehr. Vielleicht sind die Bereiche, die ich Wissen / Steuerung (Datenbank zum Beispiel) möchten, können Sie nicht weniger kümmern uns um. Und nicht falsch verstehen. Ich charakterisierenden keine Frameworks wie unbedingt hart oder falsch. Es ist nur mein subjektives Urteil.

Auch ich würde Turbogears 2, wenn überhaupt möglich empfehlen. Wenn es herauskommt, ich denke, es ist viel besser sein wird als 1,0 in Hinblick darauf, was sie für ihre Vorgaben (genshi, Pylone, sqlalchemy)

ausgewählt hat

Ich würde vorschlagen, für Turbogears 2. Sie einen fantastischen Job zu integrieren Beste aus Python Welt getan haben.

WSGI: Angenommen, Sie mäßig komplexe Projekte / Business-Lösungen in TG2 oder einem anderen Rahmen sagt Grok entwickeln. Auch wenn diese Frameworks unterstützt WSGI, dass man nicht, wer diese Frameworks verwendet haben WSGI lernen? In den meisten Fällen ist die Antwort Nein, ich meine, es ist dieses Wissen gut hat keinen Zweifel.

WSGI Wissen wahrscheinlich ist nützlicher, in Fällen wie

  • Sie wollen einige Middleware oder eine andere Komponente verwenden, die nicht als Teil des Standard-Stack für zB vorgesehen ist. Authkit mit TG oder Grok ohne ZODB .
  • Sie tun etwas Integration.

CherryPy ist gut, aber denken Sie Ihre Datenbank der Umgang verpflichtet / Rollbacks am Ende der Transaktionen, Belichten json, Validierungen in solchen Fällen TG, Django wie Frameworks alles für Sie tun.

Web2py ist das Geheimnis Sauce hier. Verpassen Sie es nicht heraus zu überprüfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top