【问题标题】:How can I best find out how django works internally?我怎样才能最好地了解 django 在内部是如何工作的?
【发布时间】:2011-05-15 04:11:17
【问题描述】:

所以我一直在玩 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. 您可以向我指出任何可以很好地解释这一点的文件......是的,我听说过这个 google 的东西,但还没有真正发现任何超级有用的东西。

非常感谢 保罗

【问题讨论】:

    标签: django cgi webserver internals


    【解决方案1】:

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

    来自Pycon website,以下是 James 演讲的摘要:

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

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

    【讨论】:

    • 目前不存在像 DiD 这样广泛而深入的开创性作品。 Bennett 对 Django 的每一个特性都进行了深入研究。以下是演示文稿slideshare.net/ubernostrum/django-in-depth 中的幻灯片(其中多达 1025 张)。
    • 感谢 KRON 幻灯片的链接!当我读到 1025 时,我有点害怕,但似乎这是在计算所有的叠加层,所以我想我可以在一个晚上完成它们;)
    【解决方案2】:

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

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

    除此之外,James Bennett in his blog entry here 很好地描述了整个请求/响应周期。它已经很老了,但自编写以来,在那个级别的 Django 中几乎没有什么变化。

    【讨论】:

    • 你好,谢谢你的两篇文章,很有帮助!我目前正在看“James Bennett”... 那么 WSGI 也是一种 CGI(好吧,我想我会发现阅读;))谢谢!
    猜你喜欢
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多