Heim > Artikel > Backend-Entwicklung > Eine ausführliche Diskussion der fünf häufig verwendeten Python-Web-Frameworks
Es gibt so viele Frameworks in Python, und nicht viele Leute können sie alle spielen. Ehrlich gesagt habe ich nur drei davon zum Entwickeln von Projekten verwendet und habe wenig Kontakt zu anderen, daher kann ich nur kurz darüber sprechen Willkommen, um mehr zu erfahren.
Apropos Web Framework: Die Ruby-Welt wird von Rails dominiert, während Python eine Welt ist, in der unzählige Mikro-Frameworks und Frameworks blühen Liste finden Sie unter:
wiki.python.org/moin/WebFrameworks
Obwohl eine andere wichtige Skriptsprache, PHP, auch viele Frameworks hat, sind sie weitaus weniger übertrieben als Python. Das liegt genau daran des Python Web Framework (Python Web Development Framework). Es gibt zu viele Python-Frameworks (im Folgenden als Python-Frameworks bezeichnet), daher gibt es in der Python-Community immer Themen darüber, welches Python-Framework besser und welches schlechter ist, und die Diskussion erstreckt sich sogar darüber so lange wie 3-5 Jahre.
Es gibt so viele Frameworks in Python, und nicht viele Leute können sie alle spielen. Ehrlich gesagt habe ich nur drei davon zum Entwickeln von Projekten verwendet und habe wenig Kontakt zu anderen, sodass ich nur reden kann dazu kurz hier, sachkundige Freunde können gerne ergänzen.
Obwohl das Python-Framework angeblich floriert, gibt es immer noch eines, das dies tut das Größte. Es ist Django. Der Meinung, dass Django das beste unter den Python-Frameworks ist, stimmen einige Leute zu, andere lehnen die Aussage entschieden ab. Aber wenn es darum geht, zu sagen, dass Django die umfassendste Dokumentation, den höchsten Marktanteil und die meisten offenen Stellen hat, hat wohl jeder ein Nein Einspruch. Zu den wichtigsten Dingen, für die Django gelobt wird, gehören:
Perfekte Dokumentation Ich denke, ein großer Teil des Erfolgs von Django ist auf die nahezu perfekte offizielle Dokumentation von Django zurückzuführen (einschließlich des Django-Buches).
Ein vollständiger Lösungssatz, Django bietet wie Rails einen vollständigen Lösungssatz (Full-Stack-Framework + Batterien inklusive), im Grunde ist alles verfügbar, was Sie brauchen (zum Beispiel: Cache). , session, feed, orm, geo, auth) und alle werden von Django selbst erstellt. Django hat im Grunde alle Tools für die Website-Entwicklung für Sie vorbereitet, daher ist die Entwicklungseffizienz selbstverständlich Es ist leicht, Probleme zu finden, wenn sie auftreten, nicht in Ihrem Code, sondern im Quellcode von Django.
Leistungsstarkes URLRouting Mit der Konfiguration von Django können Sie sehr elegante URLs entwerfen. In Django können Sie sich grundsätzlich von hässlichen GET-Parametern verabschieden.
Self-Service-Management-Backend, Admin-Schnittstelle ist einer der auffälligsten Beiträge in Django und ermöglicht Ihnen eine vollständige Backend-Management-Schnittstelle, ohne eine einzige Codezeile schreiben zu müssen.
Das System ist eng gekoppelt. Wenn Sie der Meinung sind, dass eine bestimmte in Django integrierte Funktion nicht sehr gut ist, wird es schwierig sein, sie durch Ihre bevorzugte Bibliothek eines Drittanbieters zu ersetzen, wie z. B. das unten erwähnte ORM und Template . Es ist fast unmöglich, SQLAlchemy oder Mako in Django zu verwenden, und selbst mit einigen Patches werden Sie sich dadurch sehr, sehr unbehaglich fühlen.
Die Vorlagenfunktion ist relativ schwach und kann keinen Python-Code einfügen. Um komplexere Logik zu schreiben, müssen Sie Python zum Implementieren von Tag oder Filter verwenden. Es gab viele Diskussionen über Vorlagen. Kürzlich gab es zwei interessante Artikel über Python-Vorlagen als Referenz:
1 pydanny.blogspot.com/2010/12/stupid-template-html (FQ erforderlich )
2 techspot.zzzeek.org/2010/12/04/in-response-to-stupid-template-linguals/
Obwohl die URL-Konfiguration leistungsstark ist, muss alles von Hand geschrieben werden Dies widerspricht völlig dem Konzept der Konfiguration von Rails. Die von Experten und Django-Neulingen zugewiesenen URLs werden sehr unterschiedlich sein.
Das Datenbankschema wurde für Sie festgelegt, sodass es zu Problemen kommt. Beispielsweise erfordern viele Websites, dass die E-Mail-Adresse eindeutig ist, aber der Wert dieses Felds im Schema ist nicht eindeutig , also ist es notwendig, zu kämpfen.
Im Allgemeinen hat Django viel zu bieten und es ist großartig, damit schnell einige Webanwendungen zu entwickeln. Wenn Sie der Designphilosophie von Django folgen, werden Sie feststellen, dass Django einfach zu verwenden ist, und je mehr Sie es verwenden, desto einfacher wird es. Im Gegenteil, wenn Sie die Designphilosophie von Django nicht integrieren oder akzeptieren können, wird die Verwendung für Sie definitiv schmerzhaft sein Django, also ist es am besten, so schnell wie möglich aufzugeben. In den Augen mancher Menschen ist Django also nichts anderes als ein Elixier, für manche Menschen ist es jedoch Gift und hochgiftig.
Pylone & TurboGears & repoze.bfg
Neben Django ist der andere große Pylons, da TurboGears2.x auf Pylons basiert und repoze.bfg auch in dieses große Projekt im Pylons-Projekt integriert wurde, auf das nicht gesondert eingegangen wird später. TurboGears und repoze.bfg.
Die Designkonzepte von Pylons und Django sind völlig unterschiedlich. Pylons selbst verfügt nur über etwa zweitausend Zeilen Python-Code, enthält aber auch einige Module von Drittanbietern, die fast von Pylons verwendet werden. Pylons bietet nur ein Regal und optionale Lösungen. Sie können Komponenten wie Vorlage, ORM, Formular und Authentifizierung frei nach Ihren eigenen Vorlieben auswählen. Wir sagen oft, dass Python eine Leimsprache ist, daher können wir definitiv sagen, dass Pylons ein Leim-Framework ist, das mit der Leimsprache entwickelt wurde.
Die Entscheidung für Pylons bedeutet wahrscheinlich auch, dass Sie sich für die Freiheit entscheiden:
Alptraum beim Lernen: Pylons verlässt sich auf viele Bibliotheken von Drittanbietern, die keine Pylons sind Sie müssen auch lernen, diese Bibliotheken zu nutzen. Der Schlüssel liegt darin, dass Sie manchmal nicht wissen, was Sie lernen möchten. Die Lernkurve von Pylons ist viel höher als die von Django, und die offizielle Dokumentation von Pylons wurde bereits früher kritisiert. Glücklicherweise wurde später das Buch „The Definitive Guide to Pylons“ veröffentlicht. Aus diesem Grund galt Pylons einst als Python-Framework, das nur für Experten geeignet war.
DebuggingEin Albtraum, denn es sind viele Module beteiligt und sobald ein Fehler auftritt, ist es schwierig, das Problem zu lokalisieren. Es kann an dem Programm liegen, das Sie geschrieben haben, oder es kann sein, dass Pylons falsch ist, oder dass SQLAlchemy falsch ist, oder vielleicht liegt ein Fehler im Formencode vor, es ist sowieso sehr chaotisch. Dieses Problem lässt sich nur lösen, wenn man sich damit auskennt. Die Integration von Pylons und repoze.bfg könnte das nächste Framework hervorbringen, das Djangos Status in Frage stellen kann.
Tornado& web.py
Tornado ist ein Webserver ( In diesem Artikel wird darauf nicht näher eingegangen. Außerdem handelt es sich um ein Mikro-Framework, das web.py ähnelt. Die Idee von Tornado stammt hauptsächlich von Web.py Bret Taylor sagte Folgendes (das Framework, das er hier für FriendFeed erwähnte, kann als dasselbe wie Tornado angesehen werden):
„[web.py inspirierte das] Web-Framework, das wir bei FriendFeed verwenden [und] das Webapp-Framework, das mit App Engine geliefert wird…“
Aufgrund dieser Beziehung wird Tornado später nicht gesondert besprochen.
Der Vorteil der Optimierung eines Frameworks besteht darin, dass Sie sich auf die Geschäftslogik konzentrieren können, ohne sich zu viele Gedanken über das Framework selbst machen zu müssen oder durch das Framework beeinträchtigt zu werden muss vieles selbst erledigen.
Ich persönlich bevorzuge diese Art von optimiertem Framework, da Sie den Funktionsmechanismus des gesamten Frameworks leicht verstehen können, indem Sie den Quellcode lesen. Wenn dieser Teil des Frameworks nicht sehr zufriedenstellend ist, kann ich ihn komplett mit Monkey patchen Kommen Sie nach meinen eigenen Wünschen.
Bottle& Flask Als Vertreter der neuen Generation von Python-Frameworks ist Flask insofern sehr interessant, als es das verwendet Decorator-Methode zum Konfigurieren des URL-Routings, wie zum Beispiel: Bottle, Flask, wie web.py, sind sehr rationalisiert, Bottle und sogar alle Der Code befindet sich vollständig in dieser .py-Datei mit etwa 2.000 Zeilen. Darüber hinaus lässt sich Flask, wie auch Pylons, gut mit Jinja2, SQLAlchemy und Co. kombinieren.
Allerdings gibt es immer noch sehr wenige erfolgreiche Fälle von Bottle oder Flask.
Quixote
from bottle import route, run @route('/:name') def index(name='World'): return '<b>Hello %s!</b>' % name run(host='localhost', port=8080)
Der Grund, warum ich insbesondere über Quijote sprechen möchte, ist, dass die größte inländische in Python entwickelte Website, „Douban.com“, mit Quijote entwickelt wurde . Ich habe mir den Quellcode nur kurz angeschaut und werde keinen Kommentar dazu abgeben. Ich denke nur, dass es mehr Auswahl gäbe, wenn Douban jetzt entwickelt würde.
Andere(web2py, uliweb, Karrigell, Werkzeug...)
Letztes Missverständnis über die Framework-AuswahlIn der Wenn es um die Wahl geht, geraten viele Menschen leicht in die folgenden zwei Missverständnisse, ohne es zu wissen: 1. Welches Framework das beste ist – es gibt kein bestes Framework auf der Welt, sondern nur das am besten geeignete und geeignetste Sie Ein Rahmen für Ihr Team.
ProgrammierspracheWenn Ihr Team mit Python am besten vertraut ist, verwenden Sie Ruby. Programmiersprachen und Frameworks sind nur Werkzeuge schneller einsetzbar, gut und sparsam, nach Abschluss der Arbeiten eine gute Sache. 2. Achten Sie zu sehr auf die Leistung – Tatsächlich müssen sich die meisten Menschen nicht allzu sehr um die Leistung des Frameworks kümmern, da es sich bei der von Ihnen entwickelten Website einfach um eine kleine Website handelt unterstützen 10.000 IPs, und 10.000 sind noch seltener. Ohne eine bestimmte Anzahl an Besuchen macht es wenig Sinn, über Leistung zu sprechen, da Ihre CPU und Ihr Speicher ständig im Leerlauf sind. Darüber hinaus stellen Sprachen und Frameworks im Allgemeinen keine Leistungsengpässe dar. Leistungsprobleme treten am häufigsten beim Datenbankzugriff sowie beim Lesen und Schreiben von Dateien auf. Das Zend Framework von PHP ist notorisch langsam, aber Zend Framework hat auch große Websites wie digg.com, können Ruby und Rails, denen oft nachgesagt wird, dass sie Leistungsprobleme haben, trotzdem Twitter entwickeln? Darüber hinaus sind die aktuellen Hardware- und Bandbreitenkosten tatsächlich sehr niedrig. Insbesondere mit dem Aufkommen von Cloud-Computing-Plattformen sind die Arbeitskosten am teuersten. Wenn Sie nicht über Zehntausende von IPs verfügen, müssen Sie sich keine allzu großen Sorgen machen Wenn der Datenverkehr zunimmt, geben Sie etwas Geld aus, um etwas zu kaufen. Der Serverplatz ist gut und das Leistungsproblem kann einfach und schnell gelöst werden. Hinweis: Einige Internetnutzer stellten meine Aussage in Frage, dass „Quora mit Pylonen entwickelt wurde“, nicht objektiv sei. Lassen Sie mich erklären, dass die hier erwähnte Website A mit B entwickelt wurde, was nur bedeutet, dass A hauptsächlich oder ein Teil davon ist wurde von B entwickelt, also machen Sie sich keine Sorgen darüber, ob A C verwendet. 【Verwandte Empfehlungen】 1. Kostenloses Tutorial für grundlegende Einführung in Python
Das obige ist der detaillierte Inhalt vonEine ausführliche Diskussion der fünf häufig verwendeten Python-Web-Frameworks. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!