Django 如何工作的

Author Avatar
doubledna 2017 年 02 月 04 日

要真正的欣赏 Django,你需要撇开表象来看本质。它启发你得同时也让会让你不知所措。下图显示了在 Django 应用中一个典型的 web 请求是如何被处理的。

how-web-requests-in-django

前面的图片展示了从一个访客的浏览器到 Django 应用并返回的一个 web 请求的简单历程。如下是数字标识的路径:

  1. 浏览器发送请求(基本上是字节类型的字符串)到 web 服务器。
  2. web 服务器(比如,Nginx)把这个请求转交到一个 WSGI(比如,uWSGI),或者直接地文件系统能够取出一个文件(比如,一个 CSS 文件)。
  3. 不像 web 服务器那样,WSGI 服务器可以直接运行 Python 应用。请求生成一个被称为 environ 的 Ptyhon 字典,而且,可以选择传递过去几个中间件的层,最终,达到 Django 应用。
  4. URLconf 中含有属于应用的 urls.py 选择一个视图处理基于请求的 URL 的那个请求,这个请求就已经变成了 HttpRequest——一个 Python 字典对象。
  5. 被选择的那个视图通常要做下面所列出的一件或者更多件事情:
    1. 通过模型与数据库对话。
    2. 使用模板渲染 HTML 或者任何格式化过的响应。
    3. 返回一个纯文本响应(不被显示的)。
    4. 抛出一个异常。
  6. HttpResponse 对象离开 Django 后,被渲染为一个字符串。
  7. 在浏览器见到一个美化的,渲染后的 web 页面。

虽然某些细节被省略掉,这个解释应该有助于欣赏 Django 的高级 架构。它也展示了关键的组件所扮演的角色,比如模型,视图,和模板。Django 的很多组件都基于这几个广为人知设计模式。