摘要:
前面几个 Sections 介绍了关于 Django 请求(Request)处理的流程分析,我们也了解到,Django 是围绕着 Request 与 Response 进行处理,也就是无外乎“求”与“应”。 当请求一个页面时,Django 把请求的 metadata 数据包装成一个 HttpRequ 阅读全文
摘要:
Django 处理一个 Request 的过程是首先通过中间件,然后再通过默认的 URL 方式进行的。我们可以在 Middleware 这个地方把所有Request 拦截住,用我们自己的方式完成处理以后直接返回 Response。因此了解中间件的构成是非常必要的。 Initializer: __init__(self) 出于性能的考虑,每个已启用的中间件在每个服务器进程中只初始化一次。也就是说 ... 阅读全文
摘要:
进入 View 了 如果处理过程这时候还在继续的话,处理器会调用 view function。Django 中的 Views 不很严格因为它只需要满足几个条件: 必须可以被调用。 必须接受 django.http.HttpRequest 的实例作为第一位置参数。 必须能产生一个异常或返回 djang 阅读全文
摘要:
get_response 做的第一件事就是遍历处理器的 _request_middleware 实例变量并调用其中的每一个方法,传入 HttpRequest 的实例作为参数。 这些方法可以选择短路剩下的处理并立即让 get_response 返回,通过返回自身的一个值(如果它们这样做,返回值必须是 阅读全文
摘要:
首先发生的是一些和 Django 有关(前期准备)的其他事情,分别是: 如果是 Apache/mod_python 提供服务,request 由 mod_python 创建的 django.core.handlers.modpython.ModPythonHandler 实例传递给 Django。 阅读全文
摘要:
Django 和其他 Web 框架的 HTTP 处理的流程大致相同,Django 处理一个 Request 的过程是首先通过中间件,然后再通过默认的 URL 方式进行的。我们可以在 Middleware 这个地方把所有 Request 拦截住,用我们自己的方式完成处理以后直接返回 Response。 阅读全文
摘要:
使用通用视图后,Django请求处理过程(以ListView为例):在我们自定义的视图中: ListView的定义: View中as_view方法: dispatch方法: dispatch方法中根据http请求的method得到handler的值(get,post...),接着调用handler方 阅读全文
摘要:
Django中由wsgi模块接管http请求,核心处理方法为get_wsgi_application,其定义如下: WSGIHandler(代码有节减): 从代码中可以看到,当WSGIHandler对象被调用的时候,首先会判断请求中间件是否为None,如果为None,则通过self.load_mid 阅读全文