wie man ein Web-Framework basierend auf Python wie Django macht? [geschlossen]

7

Ich frage mich nur, welche Kenntnisse oder Techniken benötigt werden, um ein Web-Framework wie django zu erstellen.

so kann das Webframework als Cloud Computing dienen (eine Website kann horizontal skaliert werden, indem man einige Sachen sendet, die an einen anderen Server gelöst werden müssen), wenn nötig, und kann verwendet werden, um eine Website schnell wie django zu erstellen Entwickler wollen eine einfache Website erstellen.

Entschuldigung. mein Englisch ist sehr peinlich, weil ich ein Koreaner bin.

Geben Sie mir nur einige Ansätze oder Anweisungen darüber, welche Techniken benötigt werden, um ein Web-Framework zu erstellen oder was ich zu tun oder zu lernen habe.

Vielen Dank.

    
Anderson 11.09.2011, 13:11
quelle

4 Antworten

36

Sie stellen hier ein paar Fragen:

Wie man ein Web-Framework wie Django macht

Sehen Sie sich zunächst diesen Artikel Python im Web an . Es liefert sehr gute Ideen zu den verschiedenen Stücken, die in einen Rahmen gehen.

Als nächstes müssen Sie sich fragen, wie viel Sie selbst erstellen möchten.

From Scratch

Wenn Sie dies als Übung zum Erlernen der Grundlagen von Frameworks tun, sollten Sie sich über WSGI informieren. WSGI ist die API, die Django (und die meisten anderen Python-Frameworks) für die Verbindung mit dem Webserver verwendet, der die Anforderungen tatsächlich verarbeitet (wie Apache, nginx und lighthttpd). Es ist nicht notwendigerweise eine Bibliothek (obwohl es Bibliotheken gibt, die beim Erstellen von WSGI-Anwendungen helfen), sondern eher eine Standard-API, die, wenn sie verwendet wird, verspricht, dass Ihr Code mit anderen Servern funktioniert.

Es sieht so aus:

%Vor%

Das ist es. environ ist ein Wörterbuch, das alle CGI Umgebungsvariablen enthält. start_response ist eine Callback-Funktion, die Sie mit den Antwortheadern und dem Statuscode aufrufen. Schließlich wird erwartet, dass die Funktion einen Iterator zurückgibt, der der Antworttext ist. Auf der WSGI-Website können Sie mehr darüber erfahren.

Mit einer "Wrapper" -Bibliothek

Wenn Sie sich nicht mit den Details von WSGI befassen möchten (was einige Probleme mit sich bringt, die einige Kopfschmerzen bereiten können), gibt es ein paar verschiedene Bibliotheken, die das WSGI-Interface in etwas benutzerfreundlicher verpacken . Zum Beispiel sollten die Repsponse-Header keine Liste von String-Tupeln sein:

%Vor%

... sie könnten Ihnen erlauben, ein Antwortobjekt zu haben, das die Header durch ein Wörterbuch setzen kann ...

%Vor%

Django hat seine eigene Anfrage- und Antwort-API , aber es gibt noch andere da draußen Gut zu sehen. Aus der Nähe meines Kopfes, werkzeug , und WebOb .

Verwenden Sie ein vorhandenes Framework (empfohlen)

Wenn dein Ziel jedoch wirklich darin besteht, eine Website zu erstellen und zu denken, dass Django nicht tun kann, was du willst (was wahrscheinlich nicht der Fall ist, aber ich schweife ab), dann willst du nicht Machen Sie Ihren eigenen Rahmen überhaupt. Es gibt viele da draußen, die leichter als Django sind und Ihnen ein bisschen mehr Freiheit bei der Auswahl und Auswahl Ihrer eigenen Bibliotheken erlauben ("modular"). Das bedeutet, dass sie so konzipiert sind, dass Sie sie für jeden Zweck verwenden, und nicht als Framework wie Django, das versucht, Sie in Richtung der Verwendung all ihrer Tools zu lenken. Schauen Sie sich Frameworks wie Flask , Flasche und CherryPy .

Verwirklichen Sie, dass all diese Frameworks, Bibliotheken und APIs nur Mittel zum Zweck sind. Alles, was Sie tun möchten, kann wahrscheinlich in jedem von ihnen getan werden, also ist es nur eine Frage des Findens desjenigen, der Ihnen die richtige Kombination von eingebauten Werkzeugen gibt, die den ganzen Low-Level-Code ausführen, den Sie nicht implementieren müssen ohne zu viel High-Level-Zeug aus dem Weg zu kommen.

Lassen Sie das Web-Framework in der Cloud dienen, damit es horizontal skaliert werden kann

Dies ist wirklich keine Voraussetzung für das Web-Framework selbst. Selbst die Verwendung von Django in der typischen Weise (mit ihrem ORM und einer SQL-Datenbank) kann horizontal in einem guten Umfang skaliert werden (siehe den Abschnitt "Skalierung" in der Google App Engine . Obwohl dies eine nette Idee ist, schränkt dies den Benutzer ein, was Google erlaubt.

    
Mark Hildreth 11.09.2011, 14:25
quelle
4

Ein modernes Python-Web-Framework sollte WSGI implementieren. Sie können über die Begründung dahinter und einige gute Beispiele von PEP 333 nachlesen.

>

Hier ist ein weiteres Tutorial , das den gesamten Erstellungsprozess durchläuft.

    
Uku Loskit 11.09.2011 13:40
quelle
1

Ein Webanwendungsframework sollte Ссылка verarbeiten und Dienstprogramme bereitstellen, um beispielsweise die Verarbeitung der Antwort zu vereinfachen.

Sie sollten auch andere Python-Web-Frameworks wie bottle (ein Micro-Framework) und Web2py (basierend auf dem MVC-Architekturmuster) ausprobieren. Die Flaschen-API ist lehrreich.

    
amit_grepclub 11.09.2011 13:24
quelle
1

Ich würde auch die Dokumentation für Paste durchsuchen und ein wenig von Ian Bicking lesen. Er legt die konzeptionellen Blöcke sozusagen ziemlich gut dar und hat die Lektionen gelehrt, wie sie entwickelt wurden.

Web2py doco auch

aber ja, wie UKU sagte: WSGI ist eine moderne Anforderung.

    
Bob Blanchett 11.09.2011 14:21
quelle

Tags und Links