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