ySJ
|
2.0/chapter17/#176 |
2010-04-26 14:15:04
|
完整的细节请参见第14章。
|
|
ySJ
|
2.0/chapter17/#173 |
2010-04-26 14:14:37
|
这个中间件激活认证支持功能。
|
|
ySJ
|
2.0/chapter17/#170 |
2010-04-26 14:14:15
|
中间件类:
|
|
ySJ
|
2.0/chapter17/#161 |
2010-04-26 14:10:39
|
在Djangos wiki上也可以找到大量的社区贡献的中间件范例:
|
|
ySJ
|
2.0/chapter17/#154 |
2010-04-26 14:10:03
|
如果返回 <literal>HttpResponse</literal> 对象, Django 将使用该response对象,而不采用框架内置的异常处理机制。
|
|
ySJ
|
2.0/chapter17/#142 |
2010-04-26 13:54:44
|
Exception后处理函数:
|
|
ySJ
|
2.0/chapter17/#139 |
2010-04-26 13:53:49
|
<emphasis>必须</emphasis> 返回 <literal>HttpResponse</literal> 对象。
|
|
ySJ
|
2.0/chapter17/#138 |
2010-04-26 13:52:49
|
不像可能返回 <literal>None</literal>和<literal>process_response()</literal>的request和view预处理函数,
|
|
ySJ
|
2.0/chapter17/#135 |
2010-04-26 13:48:34
|
这个方法的参数相当直观:
|
|
ySJ
|
2.0/chapter17/#128 |
2010-04-26 13:42:36
|
Response后处理函数:
|
|
ySJ
|
2.0/chapter17/#121 |
2010-04-26 13:06:39
|
跟<literal>process_request()</literal>一样,<literal>process_view()</literal>应该返回一个<literal>HttpResponse</literal>对象或者返回<literal>None</literal>。
|
|
ySJ
|
2.0/chapter17/#119 |
2010-04-26 13:00:10
|
被传入view的关键字参数字典.
|
|
ySJ
|
2.0/chapter17/#97 |
2010-04-26 12:54:46
|
表 17-1.
|
|
ySJ
|
2.0/chapter17/#94 |
2010-04-26 12:51:18
|
表17-1列出了传入到这个View预处理函数的参数。
|
|
ySJ
|
2.0/chapter17/#92 |
2010-04-26 12:50:40
|
这个方法的调用时机是在Django执行完request预处理函数并确定待执行的view之后,但在view函数实际执行之前。
|
|
ySJ
|
2.0/chapter17/#89 |
2010-04-26 12:49:30
|
View预处理函数:
|
|
ySJ
|
2.0/chapter17/#87 |
2010-04-26 12:48:40
|
Django将立即返回该 <literal>HttpResponse</literal>。
|
|
ySJ
|
2.0/chapter17/#76 |
2010-04-26 12:46:11
|
Request预处理函数:
|
|
ySJ
|
2.0/chapter17/#63 |
2010-04-26 11:22:38
|
__init__(self)
|
|
ySJ
|
2.0/chapter17/#62 |
2010-04-26 11:22:29
|
Initializer:
|
|
ySJ
|
2.0/chapter17/#55 |
2010-04-26 11:19:37
|
也就是说,Django将 <literal>MIDDLEWARE_CLASSES</literal> 视为view函数外层的顺序包装:
|
|
ySJ
|
2.0/chapter17/#51 |
2010-04-26 11:15:10
|
Django项目的安装并不强制要求任何中间件,如果你愿意, <literal>MIDDLEWARE_CLASSES</literal> 可以为空。但是我们建议你激活<literal>CommonMiddleware</literal>,这点我们会马上解释。
|
|
ySJ
|
2.0/chapter17/#25 |
2010-04-26 10:51:49
|
流量很大的站点通常需要将Django部署在平衡负载的代理(参见第12章)后面。
|
|
ySJ
|
2.0/chapter17/#17 |
2010-04-26 10:04:53
|
第16章所介绍的 <literal>flatpages</literal> , <literal>redirects</literal> , 和 <literal>csrf</literal> 等应用也都是通过中间件组件来完成其魔法般的功能。
|
|
ySJ
|
2.0/chapter17/#15 |
2010-04-26 09:59:24
|
第15章讨论的站点范围cache实际上也是由一个中间件实现,一旦该中间件发现与view相应的response已在缓存中,就不再调用对应的view函数。
|
|
ySJ
|
2.0/chapter17/#13 |
2010-04-26 09:23:03
|
第14章中所有的session和user工具都籍由一小簇中间件实现(例如,由中间件设定view中可见的 <literal>request.session</literal> 和 <literal>request.user</literal> )。
|
|
ySJ
|
2.0/chapter17/#11 |
2010-04-26 09:20:12
|
如果你是顺着这本书读下来的话,你应该已经多次见到“中间件”了:
|
|
wangnaide@gmail.com
|
2.0/chapter20/#196 |
2010-04-25 12:46:07
|
Django的session框架(参见<reference name="Chapter 14" refuri="../chapter14/"> 第十四章</reference> )根本不会容许session包含在URL中。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#190 |
2010-04-25 12:44:05
|
解决方案
|
|
wangnaide@gmail.com
|
2.0/chapter20/#188 |
2010-04-25 12:43:44
|
如果幌子没有逃跑,用户可以再一次把恶意代码注入到用户环境。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#187 |
2010-04-25 12:40:48
|
攻击者可以诱骗用户点击一个链接,实际上是提交包含一个XSS攻击的幌子。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#182 |
2010-04-25 12:38:12
|
他可以稍后登陆账户并且检索数据。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#175 |
2010-04-25 12:37:18
|
你永远不知道谁一直在作怪。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#174 |
2010-04-25 12:35:38
|
一个更微妙的层面上,然而,相信在cookies中存储的任意信息绝对不是一个好主意。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#146 |
2010-04-25 12:33:13
|
我们在第四章涵盖了Django的自动转义,一起想办法将其关闭。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#167 |
2010-04-25 12:32:01
|
她便可以使该cookie来模拟原始用户。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#143 |
2010-04-25 12:29:23
|
这样,一个到<literal> http://example.com/hello/name=Jacob</literal> 的请求将导致下面的页面:
|
|
wangnaide@gmail.com
|
2.0/chapter20/#139 |
2010-04-25 12:25:57
|
为了防止这种情况,Django的模板系统自动转义所有的变量值。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#97 |
2010-04-25 12:23:44
|
你应该用<emphasis> always</emphasis> 这种方式构造自定义的SQL。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#199 |
2010-04-25 09:51:46
|
相反,存储一个在后台映射到session数据存储的session ID
|
|
wangnaide@gmail.com
|
2.0/chapter20/#236 |
2010-04-25 09:47:57
|
解决方案
|
|
wangnaide@gmail.com
|
2.0/chapter20/#268 |
2010-04-25 09:47:41
|
备注
|
|
wangnaide@gmail.com
|
2.0/chapter20/#298 |
2010-04-25 09:47:05
|
当你准备部署时请确认把这个设置为:<literal> False</literal> 。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#264 |
2010-04-25 09:45:37
|
解决方案
|
|
wangnaide@gmail.com
|
2.0/chapter20/#127 |
2010-04-25 09:44:41
|
在几天的时间里,他拥有了数以百万的朋友。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#297 |
2010-04-25 09:41:59
|
正如我们在第12章所涵盖,Django的<literal> DEBUG</literal> 设置控制这些错误信息的显示。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#295 |
2010-04-25 09:39:10
|
解决方案
|
|
wangnaide@gmail.com
|
2.0/chapter20/#316 |
2010-04-25 09:38:09
|
我们祝你好运,在运行你的Django网站,无论是为你或几个朋友的小网站,或者是下一个google
|
a little toy意指有意思的小网站
|
wangnaide@gmail.com
|
2.0/chapter20/#313 |
2010-04-25 09:34:45
|
你已经完成了我们安排的程序。
|
|
ySJ
|
2.0/chapter16/#591 |
2010-04-23 16:47:14
|
受<reference name="GNU Free Document License" refuri="/license/">GNU Free Document License</reference>约束。
|
|