2010-11-24 18 views
13

Also habe ich ein bisschen mit Django herumgespielt und ich mag dieses Framework wirklich. Ich würde jedoch gerne besser verstehen, wie es tatsächlich unter der Decke funktioniert.Wie kann ich am besten herausfinden, wie Django intern funktioniert?

Hier ist meine Sicht der Client-Server-django Welt, die sehr rau ist und wird wahrscheinlich Ihre Fußnägel curl (sorry) machen ...

  1. Der Browser sendet eine HTTP-Anfrage an den Server.
  2. Der Server macht seine Magie und Dumps die Anfrage über das CGI zu Django (?)
  3. Ein Teil von Django (was?) Empfängt die Anfrage und macht es zu einem Django-Anfrage-Objekt.
  4. Das Request-Objekt wandert auf einigen nebulösen Pfaden durch die Middleware, die seltsame Dinge damit macht.
  5. Das Anfrageobjekt endet schließlich in einer Funktion (welche?), Die die URLs betrachtet, die Muster aus urls.py entfernt und eine Ansichtsfunktion aufruft.
  6. Die View-Funktionen machen ihre Magie (mit Modellen und Vorlagen als Partner in Laster), das ist wahrscheinlich, wo ich die stärkste Illusion des Verständnisses habe (naja, abgesehen von der Datenbank Abstraktion Magie, das ist ...;)
  7. Die View-Funktionen gibt ein HttpResponse-Objekt zurück, ich denke, dass dies auf einigen nebulösen Pfaden zum CGI zurückgegeben wird.
  8. Webserver übernimmt erneut und sendet die HTTP-Antwort an den Client.

Ok, also was zum Teufel ist meine Frage, die Sie fragen? Nun, wie funktioniert das alles wirklich? Ich erwarte nicht, dass Sie gängeln mir alles ... Ich vermute, dass die Antwort wird schließlich „die Quelle, luke zu lesen“ sein, aber wäre ich Ihnen dankbar, wenn

  1. Sie könnten mein grosses aufklären misconseptions
  2. sagen Sie mir, wo ich anfangen soll? Was ich tun möchte, ist ein Debugger grapschen und nur ein paar Mal durch den Prozess gehen, aber ich weiß nicht, wo ich anfangen soll
  3. Sie könnten mich auf Dokumente verweisen, die dies gut erklären ... ja Ich habe von dieser Google-Sache gehört, aber habe nichts wirklich Super-Nützliches gefunden.

Dank viel Paul

Antwort

6

Sehen Sie James Bennetts Django in Depth Tutorial von Pycon 2015.

Vom Pycon website, hier ist die Zusammenfassung von James' Diskussion:

Die meisten Bücher, Tutorials und andere Dokumentation für Django nehmen Sie einen High-Level-Ansatz für ihre Komponenten und APIs, und so kratzen kaum die Oberfläche von der Rahmen. In diesem Tutorial werden wir jedoch einen detaillierten Blick unter die Haube werfen, der alles von den Eingeweiden des ORM über die Innereien des Vorlagensystems bis hin zur Funktionsweise der Admin-Oberfläche abdeckt.

Ob Sie der neueste Anfänger oder der erfahrenste Anwendungsentwickler sind, Sie werden ein tieferes Wissen über Django und eine Fülle neuer Tipps und Tricks erhalten, die Sie in Ihren eigenen Anwendungen verwenden können.

+3

Es gibt derzeit kein anderes so weit reichendes und tiefgreifendes wie DiD. Bennett hat einen Nagel in jedes Feature von Django gelenkt. Hier sind die Folien (satte 1025 von ihnen) aus der Präsentation http://www.slideshare.net/ubernostrum/django-in-depth. –

+0

Danke für den Link zu den Folien KRON! Es hat mich ein bisschen erschreckt, als ich 1025 gelesen habe, aber es scheint, dass es alle Overlays zählt, also kann ich sie in einer Nacht durchgehen;) – Paul

+0

1. Link funktioniert nicht (Django in Depth) –

11

Nun, Ihre erste Missverständnis ist, dass CGI etwas damit zu tun hat. Es funktioniert nicht, außer sehr unwahrscheinlichen und wenig genutzten Serverkonfigurationen.

Meistens ist Django über WSGI mit dem Server verbunden, eine Python-Spezifikation für Webserver, die mit Webanwendungen kommunizieren. Weitere Informationen finden Sie unter WSGI website.

Abgesehen davon ist der gesamte Anfrage/Antwort-Zyklus von James Bennett in his blog entry here sehr gut beschrieben. Es ist ziemlich alt, aber in Django hat sich seit dem Schreiben auf dieser Ebene wenig verändert.

+0

Hey, danke für die beiden Artikel, sehr hilfreich! Ich schaue mir gerade den "James Bennett" an ... Also ist WSGI dann eine Art CGI (na ja, ich denke ich werde das lesen;)) Danke! – Paul

Verwandte Themen