2010-11-24 38 views
13

donc j'ai joué avec django un peu et j'aime vraiment ce framework. Cependant, je voudrais mieux comprendre comment cela fonctionne réellement "sous les couvertures".Comment puis-je savoir comment fonctionne django en interne?

Voici mon point de vue actuel du monde client-serveur-django, qui est très rude et va probablement faire vos ongles d'orteil boucle (désolé) ...

  1. Le navigateur envoie une requête HTTP au serveur.
  2. Le serveur fait sa magie et envoie la requête via le CGI à django (?)
  3. Une partie de django (qui?) Reçoit la requête et la transforme en objet requête django.
  4. L'objet de requête s'égare sur certains chemins nébuleux à travers le middleware qui fait des choses étranges avec lui.
  5. L'objet request finit finalement dans une fonction (qui?) Qui regarde les URL, retire les motifs de urls.py et appelle une fonction de vue. Les fonctions de vue font leur magie (avec des modèles et des modèles comme partenaires dans vice), c'est probablement là que j'ai la plus forte illusion de compréhension (enfin, à part la magie d'abstraction de base de données ...;)
  6. La fonction d'affichage renvoie un objet HttpResponse, je suppose que cela est renvoyé sur certains chemins nébuleux vers le CGI.
  7. Webserver prend à nouveau la relève et envoie la réponse Http au client.

Ok, alors c'est quoi ma question? Eh bien, comment ça marche, vraiment? Je ne m'y attendais pas que vous me cuillère nourrir tout ... Je pense que la réponse sera finalement à cependant, « lire la source, luke », je vous serais reconnaissant si

  1. Vous pouvez éclaircir mes grosses misconseptions
  2. dites-moi par où commencer? Qu'est-ce que je voudrais faire est de déboguer un débogueur et juste marcher à travers le processus à quelques reprises, mais je ne sais pas vraiment où commencer
  3. vous pourriez me diriger vers des documents qui expliquent cela bien ... oui , J'ai entendu parler de ce truc google mais je n'ai pas vraiment trouvé quelque chose de super utile.

merci beaucoup Paul

Répondre

6

Regardez le tutoriel de James Bennett Django in Depth de Pycon 2015.

De l'Pycon website, voici le résumé de l'exposé de James:

La plupart des livres, des tutoriels et d'autres documents pour Django adoptent une approche de haut niveau pour ses composants et API, et donc à peine effleurer la surface de le cadre. Dans ce tutoriel, cependant, nous allons regarder sous le capot en détail, couvrant tout, des tripes de l'ORM aux entrailles du système de gabarit, en passant par le fonctionnement de l'interface d'administration. Que vous soyez le plus récent des débutants ou le plus expérimenté des développeurs d'applications, vous en repartirez avec une connaissance approfondie de Django et une multitude de nouveaux trucs et astuces que vous pourrez utiliser dans vos propres applications.

+3

Il n'existe actuellement aucun autre séminal aussi étendu et profond que DiD. Bennett a couru un clou dans chaque caractéristique de Django. Voici les diapositives (énorme 1025 d'entre eux) de la présentation http://www.slideshare.net/ubernostrum/django-in-depth. –

+0

Merci pour le lien vers les diapositives KRON! Ça m'a un peu effrayé quand j'ai lu 1025, mais il semble que c'est en comptant tous les superpositions, donc je suppose que je peux les passer en une nuit;) – Paul

+0

Le 1er lien ne fonctionne pas (Django en Profondeur) –

11

Eh bien, votre première idée fausse est que CGI n'a rien à voir avec cela. Ce n'est pas le cas, sauf les configurations de serveur très improbables et peu utilisées.

Généralement, Django s'interface avec le serveur via WSGI, une spécification Python permettant aux serveurs Web de communiquer avec des applications Web. Vous pouvez voir plus d'informations au WSGI website. En dehors de cela, l'ensemble du cycle requête/réponse est très bien décrit par James Bennett in his blog entry here. C'est assez vieux, mais peu de choses ont changé dans Django à ce niveau depuis qu'il a été écrit.

+0

Hey, merci pour les deux articles, très utile! Je suis en train de regarder le "James Bennett" ... Alors WSGI est-il une sorte de CGI alors (enfin, je suppose que je vais le découvrir;)) Merci! – Paul