In welchen Fällen lohnt es sich, Django zu verwenden (und in welchen Fällen ist es nicht notwendig)


Lassen Sie uns Entwicklern helfen, herauszufinden, ob das Django-Framework für ihr nächstes Projekt geeignet ist. Es ist wahrscheinlich - geeignet.

Greifen Sie nicht auf eine bestimmte Programmiersprache oder ein bestimmtes Framework zu, nur weil Sie es in Ihrem vorherigen Projekt verwendet haben oder weil Sie damit vertraut sind. Also werden die Dinge nicht getan.

Bevor Sie mit einem neuen Projekt beginnen, sollten Sie bewerten, welche Sprache oder welches Framework für Sie am besten geeignet ist, um das gewünschte Ergebnis zu erzielen. Was ist dir am wichtigsten? Sicherheit, Entwicklungsgeschwindigkeit, Skalierbarkeit, Vielseitigkeit, Support?
Es ist besser, eine fundierte Entscheidung zu treffen, bevor Sie mit der Arbeit beginnen, als später in Eile umzukehren (oder, schlimmer noch, Krücken an das Projekt während des Implementierungsprozesses zu hängen - aufgrund der Tatsache, dass Sie sich nicht um dessen Unterstützung im Voraus gekümmert haben).

Ich habe viele Jahre mit verschiedenen Technologien gearbeitet, mich sowohl mit der mobilen als auch mit der Webentwicklung befasst, und ich glaube, dass Django einen so vollständigen Satz von Funktionen bietet, die in keinem anderen Webframework zu finden sind.

Ich verstehe, dass dies eine laute Aussage ist. Lass es mich rechtfertigen.

„Django hat viele Websites, die am aktivsten genutzt werden, insbesondere Instagram und Pinterest. Sogar Facebook verwendet Django für viele seiner Dienstprogramme. Django wurde in einer Verlagsumgebung geboren, daher ist es nicht verwunderlich, dass dieses Framework auf Websites wie der Washington Post und dem Smithsonian Magazine verwendet wird. " - Amit Ashvini , Vizepräsident Marketing @ Zibtek

Gesamtansicht: Wann wird Django verwendet?


Wenn sich mindestens einige der folgenden Punkte auf Sie beziehen (und es keine Punkte in der Liste gibt, mit denen Sie überhaupt nicht einverstanden sind), passt Django wahrscheinlich gut zu Ihrem Projekt.

  • Sie müssen eine Webanwendung oder eine Backend-API entwickeln.
  • Sie müssen schnell arbeiten, schnell bereitstellen und Änderungen am Projekt vornehmen, während Sie arbeiten.
  • Standardmäßig sollte die Anwendung vor den häufigsten Sicherheitslücken und Angriffen geschützt sein, insbesondere vor CSRF, SQL-Injection, XSS, Clickjacking usw.
  • In der Anwendung kann jederzeit eine Skalierung erforderlich sein: sowohl Skalieren als auch Verkleinern.
  • In Zukunft planen Sie, die neuesten Technologien zu integrieren, beispielsweise maschinelles Lernen.
  • Sie müssen ein zuverlässiges Framework verwenden, das aktiv entwickelt wird und von vielen Top-Unternehmen und führenden Websites auf der ganzen Welt verwendet wird.
  • Sowohl die Webanwendung als auch die Serverseite der API müssen sich in derselben Codebasis befinden, was mit der „Single Source of Truth“ (DRY-Prinzip) übereinstimmt.
  • Sie möchten nicht direkt mit Datenbankabfragen arbeiten und benötigen ORM-Unterstützung.
  • Sie werden freie Software verwenden.
  • Wenn Sie nicht weiterkommen, müssen Sie selbst nach einer Lösung suchen. Daher benötigen Sie eine gute Dokumentation und eine reaktionsschnelle Entwicklergemeinschaft.

Zusätzlich zu den oben genannten Faktoren müssen Sie berücksichtigen, über welche Fähigkeiten Sie (oder Ihr Team) verfügen.

Wenn Sie ein Webentwickler sind und bereits wissen, wie das Web funktioniert, funktioniert die Arbeit mit Django für Sie relativ reibungslos. Sie müssen verstehen, wie Django strukturiert ist, und natürlich auch einige andere Dinge - und bedenken, dass Sie bereit sind.

Websites, die auf dem Django-Framework ausgeführt werden


Die Geschichte von Django reicht etwa 10 Jahre zurück. In dieser Zeit wurde es in der Produktion an vielen Top-Standorten eingesetzt. Hier einige herausragende Beispiele:
Pinterest Engineering
Mozilla
Bitbucket
Udemy
Die Zwiebel
Disqus
Washington Post
NASA
Spotify
Instagram Engineering
National geografisch
Der Wächter
Jsfiddle

Sind Sie immer noch im Zweifel, ob es sich lohnt, Ihre kostbare Zeit mit Django zu verbringen? Lassen Sie uns zunächst diskutieren, warum Django möglicherweise NICHT für Ihr Projekt geeignet ist:

Wann sollte man Django nicht benutzen?


  • Sie haben es mit einer riesigen Anwendung zu tun, die einfach nicht in eine Codebasis passt. Es ist möglicherweise besser, Ihre Anwendung in Microservices aufzuteilen. Jedes seiner Level wird besser von einem engagierten Team verwaltet. Für jeden spezifischen Anwendungsfall sind andere Technologien geeignet. In einigen dieser Szenarien kann Django nützlich sein, aber es wäre unpraktisch, eine solche Anwendung auf Django (sowie auf jedem anderen separaten Framework) vollständig zu entwickeln.
  • Sie müssen eine einfache Anwendung schreiben, in der Sie nicht mit einer Datenbank arbeiten, Dateioperationen ausführen oder etwas zumindest etwas Kompliziertes tun müssen.
    Mikroframes eignen sich am besten für solche Situationen. Einer der beliebtesten Mikroframes - Flask ist wie Django in Python geschrieben. Ähnliche Mikroframes sind beispielsweise in anderen Technologien verfügbar. Schlank in PHP, Apache Spark in Java, Express.js in Node.js usw.
  • Sie möchten alles selbst von Grund auf neu schreiben und wissen, was Sie tun.
  • Sie oder Ihre Kollegen sind mit Django / Python völlig unbekannt, und Sie haben nicht die Zeit und die Ressourcen, um die erforderlichen Fähigkeiten zu entwickeln.
    Die letztere Lösung im letzteren Fall besteht darin, mit dem zu arbeiten, was Sie am besten wissen. Wenn Sie sich für eine neue Technologie oder ein neues Framework entscheiden, steigt die Wahrscheinlichkeit, dass Sie Fehler machen, um ein Vielfaches.

Wenn sich all das nicht auf Ihr Projekt bezieht, wird Django wahrscheinlich zu Ihnen passen.

Gründe, Django zu verwenden


Das Django-Framework ist in Python geschrieben:
Ich weiß, dass du das weißt.

Daher werde ich diese Gelegenheit nutzen und einige der wichtigsten Vorteile von Django hervorheben, die er von Python geerbt hat. Ich werde mich kurz fassen.

Python ist eine der beliebtesten und am schnellsten wachsenden Programmiersprachen der Welt.

Quellen:

TIOBE-Index
Die Datenanalyse von Indeed.com Jobs von Coding Dojo
Github Octoverse

Python zu lernen ist wirklich sehr einfach. Normalerweise sind moderne Entwickler die ersten, die diese bestimmte Sprache lernen.

Das Obige bedeutet überhaupt nicht, dass diese Sprache nur für Anfänger ist. Python wird auch in der Spitzentechnologie verwendet. Python wird im technologischen Stack vieler großer Unternehmen, einschließlich Google, aktiv eingesetzt.

Python eignet sich hervorragend für die Entwicklung von Web-Scraping-Tools.

Es interagiert gut mit anderen Sprachen.

Python-Entwicklung bedeutet nicht, dass Sie gezwungen sind, alles nur in Python zu schreiben.

Möglicherweise können Sie Bibliotheken für viele andere Sprachen verwenden, einschließlich C / C ++ / Java.

Python ist portabel und leicht zu lesen.
Python kann sogar auf der JVM ausgeführt werden. Lernen Sie Jython kennen .
Python wird häufig in so beliebten Technologien wie Big Data und maschinellem Lernen eingesetzt.
Sie erhalten Zugriff auf die riesige PyPI-Bibliothek.

All-Inclusive von Django


"All inclusive" bedeutet, dass Django sofort mit den meisten Bibliotheken und Tools ausgestattet ist, die in üblichen praktischen Situationen benötigt werden. Ich werde auflisten: Django ORM, Middleware, Authentifizierung, HTTP-Bibliotheken, Unterstützung für mehrere Standorte, i18n, Django Admin, Template Engine usw. - und das ist noch nicht alles. Kein anderes mir bekanntes Framework bietet auf einmal so breite Unterstützung.

Einige betrachten dies als "Minus", während andere es als "Plus" betrachten. Jede Seite des Rechts ist auf ihre Weise anders, und bis zu einem gewissen Grad stimme ich beiden zu.

Dies ist ein Minus, da sich das Gerüst in einer solchen Situation in einen Monolithen verwandelt.

Ich glaube, wenn Sie diese Merkmale benötigen, die zur Bildung eines Monolithen führen, müssen Sie auf die eine oder andere Weise eine andere Bibliothek verwenden (oder sie selbst schreiben).

Warum also kein Tool verwenden, in dem all dies bereits vorhanden ist, in Schlachten getestet wurde, an den größten Standorten operiert, aktiv entwickelt und von der Community unterstützt wird?

Wenn Sie die meisten von Django angebotenen Funktionen nicht benötigen, ist es besser, bei einigen Mikroframeworks zu bleiben.

Das Rad nicht neu erfinden - erinnerst du dich? Verbringen Sie Ihre Zeit mit dem, was wirklich wichtig ist, und lassen Sie Django den Rest erledigen.

Django admin


Obwohl ich dieses Element im vorherigen Abschnitt erwähnt habe, verdient es besondere Aufmerksamkeit. In vielen Frameworks, insbesondere in Laravel, Yii usw., wurde versucht, die Arbeit mit dem Admin-Panel zu vereinfachen. Ich habe es geschafft, viele Projekte in verschiedenen Frameworks zu entwickeln, aber keines davon kann mit Django verglichen werden, wenn man bequem mit dem Admin-Panel arbeitet.

Einige glauben, dass Django Admin nicht flexibel genug ist, und um einen Teil davon an Ihre Bedürfnisse anzupassen, müssen Sie sich viel Mühe geben. Als ich mit Django zusammenarbeitete, war ich zunächst geneigt, dem zuzustimmen, aber im Laufe der Zeit, nachdem ich den Rahmen herausgefunden hatte, wurde ich davon überzeugt. Ja, es gibt eine eigene Lernkurve, aber keine Sekunde, die Sie dafür verwenden, wird nicht verschwendet.

Tatsächlich ist Django Admin sehr gut strukturiert. In einigen meiner Projekte habe ich das Django-Admin-Panel "wie es ist" verwendet, und in anderen habe ich es vollständig durch meine eigenen Vorlagen ersetzt, die ich von Grund auf neu entwickelt habe. In jedem Fall dauerte dies nicht länger als die Entwicklung mit einem anderen mir bekannten Framework.

Das Hauptplus? Sie erhalten sofort Zugriffsrechte und Authentifizierung. Es würde Wochen (oder zumindest einige Tage) dauern, um all dies von Grund auf neu zu entwickeln.

TROCKENES Prinzip (nicht wiederholen)


Ich kenne viele Frameworks, deren Befürworter behaupten, dass sie das „DRY“ -Prinzip wirklich einhalten. Ich habe mit vielen solchen Frameworks gearbeitet, aber in keinem von ihnen wird das Prinzip „DRY“ so implementiert, wie es sollte.

Leider wird in den meisten Frameworks dem „DRY“ -Prinzip einfach nicht genügend Aufmerksamkeit geschenkt. Wenn Sie eine Anwendung schreiben, die Sie regelmäßig aktualisieren möchten (und dies gilt für die meisten modernen Anwendungen), sollten Sie meiner Meinung nach das DRY-Prinzip befolgen, um Probleme zu vermeiden.

In Laravel müssen Sie also die Validierung für jede Prozedur separat schreiben. Bei den meisten anderen Frameworks ist die Situation dieselbe. Damit Ihr Code dem DRY-Prinzip entspricht, müssen Sie hart arbeiten. Es ist schwierig, den Überblick zu behalten, insbesondere wenn Sie als Team arbeiten.

Das Django-Framework ist wiederum so konzipiert, dass Verstöße gegen das DRY-Prinzip dort normalerweise nur absichtlich auftreten.

Das sollte doch nicht sein, oder? Betrachten Sie ein Beispiel.

So funktioniert Django bei der Datenbankvalidierung und -migration


Erstellen Sie die Model mit den erforderlichen Feldern. Wir geben alle zusätzlichen Validierungen und Einschränkungen an, die wir benötigen.

Migrationen werden mit einem einzigen CLI-Befehl generiert: "python manage.py makemigrations".
Änderungen werden an der Datenbank mit einem einzigen CLI-Befehl vorgenommen: "python manage.py migrate".
Validierungen und Einschränkungen werden bei jedem CRUD-Vorgang automatisch überprüft - unabhängig davon, ob es sich um ein Django-Administrator- oder ein Django-REST-Framework handelt. Sie müssen keine erneuten Validierungen schreiben.
Dieselbe Modellklasse wird zum Generieren von Django Admin CRUD-Ansichten verwendet. Kein benutzerdefiniertes HTML / CSS erforderlich.

Vergleichen Sie diese Bedingungen mit jedem anderen Framework - und ich denke, Sie könnten so etwas niemals in den folgenden wenigen Codezeilen tun:

 class Employee(models.Model): name = models.CharField(max_length=127) email = models.EmailField(null=True, blank=True) created_at = models.DateTimeField(blank=True, null=True, auto_now_add=True) updated_at = models.DateTimeField(blank=True, null=True, auto_now=True) 

Hier geht es nicht nur darum, sich nicht zu wiederholen. Dieser Ansatz bewahrt Sie in Zukunft vor Fehlern. Wir alle befanden uns in Situationen, in denen wir zufällig etwas an einem Ort geändert und vergessen haben, es an einem anderen Ort zu ersetzen - und dies wurde erst klar, nachdem viele Benutzer Probleme hatten.

Wenn Sie in Django zum obigen Code zurückkehren und das Feld `max_length` durch etwas anderes ersetzen müssen, tun Sie es einfach hier. Die Änderung gilt automatisch für die Validierung aller Routen und für die Datenbank.

Objektrelationale Zuordnung in Django


Django bietet eine sofort einsatzbereite ORM-Engine mit vollem Funktionsumfang.

Ich habe mit vielen ORM-Tools in verschiedenen Technologien gearbeitet, darunter Eloquent, greenDAO, Yii AR usw. In allen von ihnen werden die einfachsten Anfragen recht gut behandelt, aber früher oder später musste ich diese oder jene Anfragen von Grund auf neu schreiben, da der ORM-Mechanismus einen bestimmten praktischen Fall nicht bewältigen konnte.

Mit Django ORM war ich noch nicht in solchen Situationen. Es hat so gut funktioniert, dass Sie vielleicht vergessen, dass Sie mit Datenbankabfragen arbeiten. Genau das sollte die objektrelationale Zuordnung sein. Im Folgenden sind einige Beispiele für Django ORM aufgeführt:

 #  5  ,  rank = 10  age <= 30 top_young_employees = Employee.objects.filter(rank=10, age__lte=30)[:5] #      employee = Employee.objects.create(name='John Doe', age=35, country='IN') #      print(employee.name) 

Schnelle Entwicklung


Die Entwickler fast aller Webframeworks geben gerne damit an, und vielleicht haben sie alle wirklich Recht - je nachdem, welche Bedeutung wir dem Wort „schnell“ geben.

Es stimmt, mit Django sind einige Dinge unglaublich schnell erledigt. Sie haben bereits gesehen, wie einfach wir die Administrator-Benutzeroberfläche, die Datenbanktabelle und die Validierung ermitteln konnten.
Es war nur die Spitze des Eisbergs.

Im Prinzip ist eine schnelle Entwicklung kein Merkmal als solches, sondern nur eine organische Folge von Django DRY, ORM, der Template-Engine und der All-Inclusive-Philosophie.

Django Framework Sicherheit


Lassen Sie uns zugeben, manchmal sind Entwickler faul. Ich bin mir so sicher Von Zeit zu Zeit zögere ich und verschiebe die Lösung für kritische Aufgaben. Hier können verschiedene Schwachstellen auftreten.

Mir gefällt besonders die Tatsache, dass Django keine Sicherheitsablässe macht, um das Entwicklungstempo zu beschleunigen. Sicherheitsfunktionen sind standardmäßig aktiviert. Es spielt also keine Rolle, ob Sie faul sind oder nicht.

Open Source, exzellente Dokumentation, riesige Community usw.


Da Django ein Open-Source-Framework ist, das wahnsinnig beliebt ist, hat sich um es herum eine reaktionsfähige Community gebildet. Ich denke, Sie sind sich der Vorteile freier Software bewusst - und daher sind sie alle Django eigen.

Die offizielle Django-Dokumentation ist für jeden Entwickler mehr als ausreichend. Wenn Sie nicht weiterkommen, ist es nicht schwierig, eine Lösung zu finden.

Möglicherweise haben Sie bereits den Eindruck, dass Django viele eigene Bibliotheken erstellt hat, und Sie werden überrascht sein, dass es hier keine spezielle Bibliothek zum Testen gibt. Nein, denken Sie nicht, dass das Django-Framework keine Tests unterstützt - es unterstützt auch solche. Es ist nur so, dass es nach dem Prinzip "Nicht wiederholen" sinnlos wäre, eine Bibliothek zum Testen zu entwickeln, wenn sich eine hervorragende Bibliothek dieser Art bereits in Python selbst befindet. Django interagiert gut mit ihr. Darüber hinaus lässt es sich sehr gut mit Bibliotheken von Drittanbietern wie pytest kombinieren.

Aktueller Zustand von Django und anderen populären Rahmenbedingungen


Daher habe ich versucht, die Probleme, auf die ich bei der Arbeit mit anderen Frameworks gestoßen bin, so weit wie möglich hervorzuheben und diese Frameworks mit Django zu vergleichen. Nachdem ich mit Yii, CodeIgniter, WordPress, CS-Cart, Laravel usw. gearbeitet hatte, kam ich zu dem Schluss, dass Django viel besser ist als alle anderen.
Dies ist jedoch nur meine Meinung.

Wenn Sie Statistiken mögen, finden Sie hier die jährliche Stack Overflow-Studie, in der Django zu den beliebtesten und gefragtesten Frameworks gehört:

Frameworks, Bibliotheken und Tools
Am meisten geliebte, gefürchtete und gesuchte Frameworks, Bibliotheken und Tools

Zusätzlich zu den oben genannten Erfahrungen mit PHP habe ich auch Android-Anwendungen in Java und Client-Anwendungen in React.js entwickelt. In all diesen Fällen habe ich ziemlich viel Zeit damit verbracht, die Codebasis zu überarbeiten und nach der besten Architektur zu suchen, nachdem ich einige Monate lang Probleme mit der Skalierbarkeit in Verbindung gebracht und das Refactoring wieder aufgenommen hatte.

Ich habe kürzlich eine Anwendung, die ich seit über einem Jahr in Produktion habe, von Laravel nach Django umgeschrieben. Ich habe es geschafft, eine neue Codebasis in weniger als 10 Tagen bereitzustellen und die Mindestmenge an Code dafür zu schreiben (ich sage dasselbe: Die Komplexität nimmt ab!). In der entgegengesetzten Richtung würde ein solcher Vorgang definitiv mehr als einen Monat dauern.

Wenn Sie versuchen, andere Frameworks direkt mit Django zu vergleichen, erhalten Sie nichts.
Die Leistungsüberwachung kann zeigen, dass das Java-Framework schneller als Django ist. Sie können gut mit PHP umgehen, daher ist es möglich, dass die Entwicklung Ihrer Anwendung in Django schneller ist als mit dem bekannten PHP-Framework. Bei einer sehr einfachen Anwendung erscheint Ihnen das Einrichten von Django möglicherweise etwas mühsam - natürlich ist es viel einfacher, eine Datei mit Skripten zu schreiben. Die Umfrageergebnisse können je nach Zielgruppe variieren.

Hier diskutieren wir jedoch nicht nur Frameworks, die sich auf andere Technologien beziehen. Selbst wenn Sie mit Python vertraut sind, ist das Flask-Mikroframework möglicherweise bequemer und wünschenswerter. Wir müssen uns überlegen, bei welchem ​​wir Halt machen sollen.
Mein Rat ist einfach, sie nicht zu vergleichen.

Fazit


Meiner Meinung nach gelang es Django, Leistung, Architektur, Entwicklungskomplexität, Sicherheit und Skalierbarkeit perfekt in Einklang zu bringen.

Wenn Sie anfangen, ein Projekt von Grund auf neu zu schreiben, empfehle ich dringend, es mit Django zu erstellen.

Source: https://habr.com/ru/post/de449784/


All Articles