19

所以我一直在玩 django,我真的很喜欢这个框架。但是,我想更好地了解它实际上是如何“在幕后”工作的。

这是我目前对 client-server-django 世界的看法,它非常粗糙,可能会让你的脚趾甲卷曲(对不起)......

  1. 浏览器向服务器发送 Http 请求。
  2. 服务器发挥作用并通过 CGI 将请求转储到 django(?)
  3. django 的某些部分(哪个?)接收请求并将其转换为 django 请求对象。
  4. 请求对象通过中间件在一些模糊的路径上徘徊,中间件用它做奇怪的事情。
  5. 请求对象最终以某个函数(哪个?)结束,该函数查看 url,从 urls.py 中取出模式并调用视图函数。
  6. 视图函数发挥了它们的魔力(与模型和模板作为副伙伴),这可能是我最有理解错觉的地方(好吧,除了数据库抽象魔法之外,就是......;)
  7. 视图函数返回一个 HttpResponse 对象,我猜这是在 CGI 的一些模糊路径上返回的。
  8. Webserver 再次接管并将 Http 响应发送给客户端。

好的,那么你问我的问题到底是什么?那么,这一切是如何运作的,真的吗?我不指望你把所有东西都喂给我……我怀疑答案最终会是“阅读源代码,卢克”,但是,如果

  1. 你可以澄清我的严重误解
  2. 告诉我从哪里开始?我想做的是抓住一个调试器,然后通过几次过程,但我真的不知道从哪里开始
  3. 你可以向我指出任何可以很好地解释这一点的文件......是的,我听说过这个谷歌的东西,但还没有真正发现任何超级有用的东西。

非常感谢保罗

4

2 回答 2

13

好吧,您的第一个误解是 CGI 与此有关。它没有,除了非常不可能和很少使用的服务器配置。

大多数情况下,Django 通过 WSGI 与服务器交互,WSGI 是一种 Python 规范,用于 Web 服务器与 Web 应用程序对话。您可以在WSGI 网站上查看更多信息。

除此之外,James Bennett在他的博客文章中很好地描述了整个请求/响应周期。它已经很老了,但是自从它被编写以来,在那个级别的 Django 中几乎没有什么变化。

于 2010-11-24T15:24:43.207 回答
10

观看来自 Pycon 2015的 James Bennett 的Django in Depth教程。

来自Pycon 网站,这是 James 演讲的摘要:

大多数 Django 书籍、教程和其他文档都对其组件和 API 采用高级方法,因此几乎没有触及框架的表面。然而,在本教程中,我们将详细了解底层内容,涵盖从 ORM 的内部结构到模板系统的内部结构,再到管理界面的真正工作原理。

无论您是最新的新手还是经验最丰富的应用程序开发人员,您都会对 Django 有更深入的了解,以及可以在自己的应用程序中使用的大量新技巧和窍门。

于 2010-11-24T15:49:37.983 回答