• Erledigen Sie die Anwendungssicherheit auf die richtige Weise! Erkennen, schützen, überwachen, beschleunigen und mehr…
  • Python ist sowohl ein lustiges Spielzeug als auch ein erschreckender Flammenwerfer. Gleiches gilt für das, was Sie mit Python tun können.

    Python wird von Hobbyisten, Wissenschaftlern und Architekten gleichermaßen geliebt.

    Es ist verdammt einfach, damit zu beginnen, verfügt über Abstraktionen höherer Ordnung und Metaprogrammierfunktionen zum Erstellen großer und komplexer Systeme und verfügt über eine Vielzahl von Bibliotheken, mit denen Sie so ziemlich alles erledigen können. Sicher, es gibt Einschränkungen, wenn es um Parallelität und starkes Tippen geht, aber Sie können diese umgehen.

    In diesem Artikel werfen wir einen Blick auf einige der besten Python-Frameworks, wenn es darum geht, große und kleine Webanwendungen zu erstellen.

    Django

    Das Django Framework hat den Test der Zeit überstanden, das Go-to-Web-Framework für die Python-Community. Wenn Sie einen Python-Entwickler im Schlaf angreifen und ihn zwingen, eine Webanwendung mit vorgehaltener Waffe zu erstellen, greifen sie automatisch nach Django, so wie ein Rubyist nach Rails greift.

    Und dafür gibt es einen guten Grund. Django ist, wie der Slogan sagt, "ein Web-Framework für Perfektionisten mit Fristen". Es handelt sich um ein sogenanntes "Batterien enthalten" -Framework (ähnlich wie Python eine Sprache mit Batterien), das alle gängigen Funktionen sofort bereitstellt.

    Mit diesen Funktionen verkürzt Django die Entwicklungszeit massiv:

    • Ein praktisches und angenehmes ORM mit Migrationen, die vom Framework automatisch erstellt und angewendet werden.
    • Gerüst für die automatische Generierung des Admin-Panels basierend auf Ihren Modellen.
    • Unterstützung für Cookies, Sitzungen, Middleware, Vorlagen usw.
    • Sicherheitsfunktionen wie XSS-Prävention, CRSF-Prävention usw. werden automatisch angewendet.
    • Funktioniert mit praktisch allen Datenbanken (es ist einfach, Adapter zu finden, bei denen kein offizieller Support vorhanden ist).
    • Erstklassige Unterstützung für geografische Daten und räumliche Abfragen GeoDjango

    Und sehr viel mehr. Es genügt zu sagen, dass Django ein vollwertiges, freundliches Webframework ist.

    Ist Django für dich?

    Absolut ja

    Django ist für alle Anwendungsfälle sehr sinnvoll, egal ob Rapid Prototyping oder Planung einer Unternehmensanwendung. Die einzige grobe Kante, auf die Sie stoßen, ist die Struktur des Frameworks. Da sich Django nach hinten beugt, um die Entwicklung für Sie schnell und einfach zu gestalten, legt es dem Entwickler seine Struktur (ein Konzept namens „Konvention über Konfiguration“) auf, mit der Sie möglicherweise nicht einverstanden sind. Wenn Sie beispielsweise das Django-ORM durch etwas anderes ersetzen möchten (z. B. SQL Alchemy), sollten Sie sich auf Überraschungen einstellen.

    Möchten Sie mit Django und Python Full-Stack-Entwickler werden? - Schau dir das an fantastischer Online-Kurs.

    Flasche

    Während Django fast den gesamten Mindshare in der Python-Webentwicklung übernimmt, Flasche ist ein starker Anwärter.

    Im Gegensatz zu Django ist Flask ein „Mikro-Framework“, das heißt, es konzentriert sich darauf, ein paar Dinge auf den Punkt zu bringen und den Rest Ihnen zu überlassen. Dieses „der Rest liegt bei Ihnen“ kann eine Quelle der Frustration oder Freude sein, je nachdem, was Ihre Ziele sind. Für diejenigen, die wissen, was sie tun und ihre Webanwendungen liebevoll gestalten möchten, indem sie Komponenten ihrer Wahl auswählen, ist Flask ein Glücksfall.

    Flasche bietet folgende Funktionen:

    • Routing, Vorlagen, Sitzungsverwaltung und andere nützliche Funktionen.
    • Volle Unterstützung für Unit-Tests
    • Eine minimale, steckbare Architektur
    • Erstklassige REST-Unterstützung
    • Unterstützung für Blueprints, Flask 'einzigartige Architektur für winzige Webanwendungen
    • Wählen Sie Ihre Pakete für ORM, Migrationen usw. aus.
    • Flexible Anwendungsstruktur - Platzieren Sie Ihre Dateien dort, wo sie für Sie am sinnvollsten sind
    • Statische Datei bereitstellen
    • WGSI-konform

    Ist Flask für dich?

    Wie bereits erwähnt, ist Flask ein minimales Webframework, bei dem alles in einzelne Komponenten unterteilt ist, die Sie austauschen können. Wenn Sie es eilig haben, einen Prototyp zu erstellen, verbringen Sie viel Zeit damit, triviale Entscheidungen über die Datenbank, die Ordnerstruktur, das Routing usw. zu treffen, die sich als kontraproduktiv erweisen können. Flask funktioniert am besten, wenn Sie sich mit einem stabilen, seriösen Projekt mittlerer bis großer Größe befassen, insbesondere mit REST-APIs.

    Kolben

    Wenn Sie dachten, Flask 'Ansatz sei nicht minimal genug und Sie möchten immer noch mehr Kontrolle, sagen Sie Hallo zu Kolben.

    Die Flasche wird noch weiter entfernt, bis zu dem Punkt, an dem die einzige Abhängigkeit die Python-Standardbibliothek ist. Dies bedeutet, dass weder Pip noch Pip installiert werden müssen, obwohl dies höchstwahrscheinlich in Kürze erforderlich sein wird. Hier ist, warum Flasche für einige Leute auffällt:

    • Bereitstellung einzelner Dateien. Ja, Ihre gesamte Anwendung befindet sich in einer einzigen ".py" -Datei.
    • Keine externen Abhängigkeiten. Wenn Sie die richtige Python-Version installiert haben, können Sie loslegen.
    • Liefert die Template-Engine, die gegen Jinja2, Mako oder Cheetah ausgetauscht werden kann.
    • Unterstützung für Formulare, Header, Cookies und Datei-Uploads.
    • Eingebauter Webserver, der leicht ausgetauscht werden kann.

    Ist Flasche für dich?

    Wenn Sie eine wirklich kleine App (z. B. weniger als 500 Codezeilen) ohne besondere Anforderungen erstellen, ist Bottle für Sie möglicherweise sehr sinnvoll. Es ist ein kompletter No-Nonsense-Ansatz zum Erstellen von Web-Apps. In der Praxis werden Sie jedoch eher behindert als von Bottle unterstützt. Der Grund ist, dass sich die reale Welt ständig verändert und bevor Sie es wissen. Neue Anforderungen werden auf Ihren Kopf fallen gelassen. An diesem Punkt würde es mühsam werden, alles in eine einzige Datei zu packen.

    Auch wenn Sie denken, dass Flasche und Flasche fast gleich sind, haben Sie Recht. Vorschläge von Verschmelzung Die beiden stammen aus dem Jahr 2012, und sogar Armin, der Schöpfer von Flask, stimmt dem zu. Marcel, der Schöpfer von Bottle, behält jedoch aufgrund des Single-File-Ansatzes eine strikte ideologische Unterscheidung bei und besteht darauf, dass die beiden getrennt bleiben.

    Zope

    Zope ist kompliziert zu erklären, aber ich werde es versuchen. Ja, es ist ein Webframework, mit dem große oder kleine Anwendungen erstellt werden können, aber das ist noch nicht alles. Zope ist eher eine Plattform, die aus Tools (einschließlich Web-Frameworks) besteht, die nach der Zope-Philosophie erstellt und von der Zope Corporation verwaltet werden.

    Zope verfügt über mehrere interessante Komponenten und Funktionen, die für die Entwicklung von Unternehmensanwendungen geeignet sind:

    • Eine Architektur zur Registrierung und Erkennung von Komponenten zum Konfigurieren einer großen App.
    • ZODB - (die einzige) Objektdatenbank für Python zum nativen Speichern von Objekten.
    • Vollständiges Framework und Standards für Content Management Systeme
    • Eine Reihe von Webanwendungs-Frameworks - das kanonische heißt immer noch Zope, obwohl mehrere neue Frameworks (wie Grok) darauf aufgebaut wurden.
    • Starke Standards für Softwareentwicklung, -freigabe und -wartung.

    Ist Zope für dich?

    Wenn Sie eine stark strukturierte Umgebung zum Erstellen wirklich großer Apps suchen, ist Zope eine gute Wahl. Das heißt, Sie werden auch auf Ihren fairen Anteil an Problemen stoßen. Während sich Zope weiterentwickelt, ist die Community sehr klein, so dass viele Python-Entwickler noch nicht einmal davon gehört haben. Es ist schwierig, Tutorials und umfangreiche Dokumentationen zu finden. Seien Sie also bereit, viel herumzusuchen (obwohl die Community wirklich hilfreich ist!). Außerdem möchten die Python-Entwickler, auf die Sie stoßen, möglicherweise nicht Zope lernen und ihre Fähigkeiten „verwässern“.

    TurboGears

    TurboGears ist ein hochflexibles Framework mit einer wirklich zusammensetzbaren Architektur. Es ist ein Framework, das gemäß Ihren Anforderungen skaliert werden kann, und Sie können es verwenden, um eine Einzeldateianwendung oder einen Mandanten mit mehreren Mandanten zu erstellen.

    TurboGears verfügt über einige elegante Funktionen, von denen einige entweder in gängigen Frameworks (wie Django) nicht vorhanden sind oder schwer zu erstellen sind:

    • Erstklassige Unterstützung für mehrere Datenbanken
    • Transaktionen mit mehreren Datenbanken
    • Sehr modular - Beginnen Sie mit einer einzelnen Datei und skalieren Sie so viel, wie Sie benötigen
    • Ein leistungsfähiges ORM (SQLAlchemy, das ausgereifter und leistungsfähiger ist als Djangos ORM)
    • Steckbare Architektur basierend auf der WSGI-Spezifikation
    • Integrierte Unterstützung für Datenbank-Sharding
    • Eine funktionsgesteuerte Schnittstelle im Gegensatz zu tiefen, starren objektorientierten Hierarchien.

    Ist TurboGears für Sie?

    Wenn Sie sich glücklich entwickeln und ein getestetes, ausgereiftes und robustes Framework abseits des Medienrauschens von „awesome, next-gen“ und all dem wünschen, ist TurboGears genau das Richtige für Sie. Es ist in der Community hoch angesehen und verfügt über eine vollständige, umfassende Dokumentation. Sicher, TurboGears hat keine Meinung, was bedeutet, dass die Zeit für die Ersteinrichtung und Konfiguration länger sein kann, aber es ist das ideale Framework für die Entwicklung von Unternehmensanwendungen.

    Web2py

    Web2py begann als Hobbyprojekt und wurde 2007 veröffentlicht. Ziel ist es, die Webentwicklung für alle einfach und zugänglich zu machen.

    Infolgedessen geht Web2py den Null-Abhängigkeits-Ansatz auf das Äußerste - es gibt keine Anforderungen, es muss nichts installiert werden, und es enthält einen webbasierten Editor mit vollem Funktionsumfang für Entwicklung, Datenbankverwaltung und Bereitstellung.

    Sie können es sich fast als Android Studio vorstellen, das eher eine vollständige Umgebung als nur ein Framework ist. Einige nette Funktionen, die Web2py hat, sind:

    • Praktisch keine Lernkurve.
    • Minimaler Kern (nur 12 Objekte), der sogar gespeichert werden kann!
    • Pure-Python-Vorlagen
    • Schutz vor XSS, CSRF und anderen Angriffen
    • Eine angenehme und konsistente API

    Ist Web2py für Sie?

    Web2py ist ein stabiles und unterhaltsames Framework, aber es ist schwer, es gegen andere Optionen wie Django, Flask usw. zu empfehlen. Es gibt kaum Jobs, und die Geschichte der Unit-Tests ist nicht großartig. Das heißt, Sie könnten die Code-API und die allgemeine Erfahrung, die das Framework bietet, genießen, insbesondere wenn Sie REST-APIs erstellen.

    CherryPy

    CherryPy ist ein weiteres Mikroframework, das darauf abzielt, grundlegende Framework-Funktionen bereitzustellen und schnell aus dem Weg zu gehen.

    CherryPy ist zwar mit anderen Mikroframeworks wie Flask vergleichbar, weist jedoch einige Unterschiede auf:

    • Es enthält einen eingebauten Multithread-Server (etwas, das auf der Wunschliste von Flask bleibt)
    • Der (einzelne) Webserver kann mehrere Anwendungen hosten!
    • Stellen Sie Ihre Anwendung als WSGI-App (zur Schnittstelle mit anderen WSGI-Apps) oder als einfacher HTTP-Server (mit besserer Leistung) bereit.
    • Erstklassige Unterstützung für Profilerstellung und Unit-Tests
    • Läuft auf PyPy (für echte Performance-Junkies), Jython und sogar Android

    CherryPy macht das alles und dann das Übliche, was Sie von einem Webframework erwarten.

    Ist CherryPy für Sie?

    Wenn Sie hauptsächlich RESTful-Services erstellen, ist CherryPy ein viel ernsthafterer Konkurrent als Flask. Es ist ein zehn Jahre altes Framework, das gut ausgereift ist und sich sowohl für kleine als auch für große Anwendungen eignet.

    Sanic

    Der Aufstieg von Node und sein asynchrones Programmiermodell ließen viele Communities zurück, einschließlich Pythons. Als Reaktion darauf ist eine Flut von asynchronen Web-Frameworks auf dem Radar erschienen. Sanic ist einer von ihnen.

    Sanic ist stark von Flask inspiriert, insofern, als es die Routendekorateure, Blaupausen und andere grundlegende Elemente wie Hookline und Sinker entlehnt hat. Und sie schämen sich nicht, es zuzugeben. Was Sanic als Flask-Fan auf den Tisch bringt, ist eine echte nicht blockierende E / A, um die Leistungsstufen einer Node-Anwendung zu erfüllen. Mit anderen Worten, Sanic ist Flask mit async/await Unterstützung!

    Im Vergleich zu CherryPy hat Sanic einen unglaublichen Leistungsvorteil (denken Sie nur daran, wie es sich gegen Flask behaupten würde!). Schauen Sie sich die folgenden Ergebnisse an, die von getestet wurden DataWeave:

    Wie Sie sehen können, erstickt CherryPy praktisch, sobald die Parallelitätszahlen 50 pro Sekunde überschreiten, und verursacht eine hohe Ausfallrate.

    Ist Sanic für dich?

    Während die Leistungsmerkmale von Sanic alles andere aus dem Wasser sprengen, ist es möglicherweise nicht die beste Wahl für Ihr nächstes Projekt. Der Hauptgrund ist das Fehlen asynchroner Bibliotheken. Der Großteil der vorhandenen Python-Tools und -Bibliotheken wurde für die Single-Threaded-CPython-Version geschrieben, ohne dass eine hohe Parallelität oder asynchrone Operationen vorausgesehen wurden. Wenn Ihr bevorzugtes ORM beispielsweise keine asynchronen Vorgänge unterstützt, wird der gesamte Sinn der Verwendung von Sanic zunichte gemacht.

    Aufgrund dieser Gründe für Reife und Verfügbarkeit werden wir in Python keine asynchronen Frameworks mehr untersuchen.

    Masonite

    Ich bin vor einiger Zeit auf dieses Framework gestoßen und dachte, es sei ein Schritt in die richtige Richtung. Seitdem wurde Version 2.0 veröffentlicht und ich denke, es ist endlich an der Zeit zu geben Masonite etwas Liebe.

    Einfach ausgedrückt ist Masonite die Python-Version von Laravel (eine berühmte PHP-Framework, falls Sie es nicht wussten). Wieso spielt das eine Rolle? Dies ist wichtig, da Laravel auf den Prinzipien von Ruby on Rails basiert und diese beiden Frameworks es Nicht-Ruby-Entwicklern ermöglichen, die „Rails-Methode“ zu erleben.

    Laravel-Entwickler (und bis zu einem gewissen Grad auch Rails-Entwickler) werden sich wie zu Hause fühlen und in kürzester Zeit einsatzbereit sein. Als ich Masonite ausprobierte (und ein oder zwei Probleme einreichte, einschließlich eines Fehlers!), Konnte ich REST-APIs mit genau null Gedanken erstellen, da mein Laravel-Muskelgedächtnis alles tat.

    Als batteriebetriebenes Full-Stack-Framework bringt Masonite einige interessante Dinge auf den Tisch:

    • ORM im Active-Record-Stil
    • Datenbankmigrationen (die im Gegensatz zu Django vom Entwickler erstellt werden müssen)
    • Ein leistungsstarker IoC-Container für die Abhängigkeitsinjektion
    • Eigene CLI (als "Handwerk" bezeichnet) für Gerüst- und Ausführungsaufgaben
    • Erstklassige Unterstützung für Unit-Tests

    Der größte „Rivale“ für Masonite ist Django, da die Community ihr Bestes tut, um das Framework als einfach, entzückend und das nächste große Ding zu vermarkten. Ob es Django übertreffen wird, wird die Zeit zeigen (wenn Sie mich fragen, hat es einen anständigen Schuss), aber für eine Diskussion, die die beiden vergleicht, siehe Sie können direkt hier klicken um zur Knowledge Base zu gelangen und Sie können direkt hier klicken um zur Knowledge Base zu gelangen.

    Ist Masonite für dich?

    Masonite ist im Vergleich zu Django noch ein Baby, daher kann es Django nicht empfohlen werden. Das heißt, wenn Sie sich für Rails (oder Laravel) interessieren, werden Sie es zu schätzen wissen, was Masonite zu bieten hat. Es ist ideal für den schnellen Bau von Prototypen, bei denen alles vorkonfiguriert und einfach zu wechseln ist.

    Fazit

    Es gibt keinen Mangel an Python-Frameworks da draußen, groß und klein. Während Sie für ein kleines Projekt so ziemlich alles aufnehmen können, stellt eine Unternehmensanwendung Anforderungen, die nicht viele dieser Frameworks erfüllen können. Wenn Sie mich für die Unternehmensentwicklung fragen, fallen Ihnen Django (bis zu einem gewissen Grad), Zope und TurboGears ein. Und selbst unter diesen neige ich zu TurboGears.

    Trotzdem kann jeder Architekt, der sein Geld wert ist, ein Mikroframework nehmen und seine Architektur ausrollen. Und genau das passiert in der Praxis, was den Erfolg von Flask und ähnlichen Ideen erklärt.

    Wenn Sie ein Neuling sind, dann dieser Online-Kurs wäre hilfreich, um Python zu lernen.

    Als nächstes erkunden Sie einige der spezialisierten Python-Frameworks zum Erstellen von APIs.