ySJ
|
2.0/chapter16/#493 |
2010-04-23 16:26:53
|
在此情况下,表单提交永远无法成功。
|
|
ySJ
|
2.0/chapter16/#494 |
2010-04-23 16:32:22
|
(这是因为在页面发送到客户端之前,<literal>CsrfMiddleware</literal>使用正则表达式来添加<literal>csrfmiddlewaretoken</literal>字段到你的HTML中,而正则表达式不能处理不规范的HTML。)如果你怀疑出现了这样的问题。使用你浏览器的查看源代码功能以确定<literal>csrfmiddlewaretoken</literal>是否插入到了表单中。
|
|
ySJ
|
2.0/chapter16/#500 |
2010-04-23 16:33:50
|
包<literal>django.contrib.humanize</literal>包含了一些是数据更人性化的模板过滤器。
|
|
ySJ
|
2.0/chapter16/#501 |
2010-04-23 16:37:28
|
要激活这些过滤器,请把<literal>'django.contrib.humanize'</literal>加入到你的<literal>INSTALLED_APPS</literal>中。完成之后,向模版了加入<literal>{% load humanize %}</literal>就可以使用下面的过滤器了。
|
|
ySJ
|
2.0/chapter16/#523 |
2010-04-23 16:38:19
|
例子:
|
|
ySJ
|
2.0/chapter16/#533 |
2010-04-23 16:38:49
|
可以传入整数或者表示整数的字符串。
|
|
ySJ
|
2.0/chapter16/#540 |
2010-04-23 16:39:32
|
例子:
|
|
ySJ
|
2.0/chapter16/#550 |
2010-04-23 16:39:48
|
可以传入整数或者表示整数的字符串。
|
|
ySJ
|
2.0/chapter16/#556 |
2010-04-23 16:40:11
|
例子:
|
|
ySJ
|
2.0/chapter16/#564 |
2010-04-23 16:40:36
|
254变成254th。
|
|
ySJ
|
2.0/chapter16/#566 |
2010-04-23 16:40:47
|
可以传入整数或者表示整数的字符串。
|
|
ySJ
|
2.0/chapter16/#570 |
2010-04-23 16:41:48
|
包<literal>django.contrib.markup</literal>包含了一些列Django模板过滤器,每一个都实现了一中通用的标记语言。
|
|
ySJ
|
2.0/chapter16/#579 |
2010-04-23 16:43:26
|
例如:<literal>textile</literal>过滤器吧Textile格式的文本转换为HTML。
|
|
ySJ
|
2.0/chapter16/#583 |
2010-04-23 16:43:53
|
一旦完成了该项工作,在模板中通过 <literal>{% load markup %}</literal> 就能使用这些过滤器。
|
|
ySJ
|
2.0/chapter16/#588 |
2010-04-23 16:45:40
|
这些继承框架(CSRF、身份验证系统等等)通过提供 <emphasis>中间件</emphasis> 来实现其奇妙的功能。中间件是在请求之前/后执行的可以修改请求和响应的代码,它扩展了框架。
|
|
ySJ
|
2.0/chapter16/#589 |
2010-04-23 16:46:02
|
在下一章,我们将介绍Django的中间件并解释怎样写出自己的中间件。
|
|
ySJ
|
2.0/chapter16/#592 |
2010-04-23 16:46:25
|
谨奉
|
|
ySJ
|
2.0/chapter16/#591 |
2010-04-23 16:47:14
|
受<reference name="GNU Free Document License" refuri="/license/">GNU Free Document License</reference>约束。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#313 |
2010-04-25 09:34:45
|
你已经完成了我们安排的程序。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#316 |
2010-04-25 09:38:09
|
我们祝你好运,在运行你的Django网站,无论是为你或几个朋友的小网站,或者是下一个google
|
a little toy意指有意思的小网站
|
wangnaide@gmail.com
|
2.0/chapter20/#295 |
2010-04-25 09:39:10
|
解决方案
|
|
wangnaide@gmail.com
|
2.0/chapter20/#297 |
2010-04-25 09:41:59
|
正如我们在第12章所涵盖,Django的<literal> DEBUG</literal> 设置控制这些错误信息的显示。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#127 |
2010-04-25 09:44:41
|
在几天的时间里,他拥有了数以百万的朋友。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#264 |
2010-04-25 09:45:37
|
解决方案
|
|
wangnaide@gmail.com
|
2.0/chapter20/#298 |
2010-04-25 09:47:05
|
当你准备部署时请确认把这个设置为:<literal> False</literal> 。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#268 |
2010-04-25 09:47:41
|
备注
|
|
wangnaide@gmail.com
|
2.0/chapter20/#236 |
2010-04-25 09:47:57
|
解决方案
|
|
wangnaide@gmail.com
|
2.0/chapter20/#199 |
2010-04-25 09:51:46
|
相反,存储一个在后台映射到session数据存储的session ID
|
|
wangnaide@gmail.com
|
2.0/chapter20/#97 |
2010-04-25 12:23:44
|
你应该用<emphasis> always</emphasis> 这种方式构造自定义的SQL。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#139 |
2010-04-25 12:25:57
|
为了防止这种情况,Django的模板系统自动转义所有的变量值。
|
|
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/#167 |
2010-04-25 12:32:01
|
她便可以使该cookie来模拟原始用户。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#146 |
2010-04-25 12:33:13
|
我们在第四章涵盖了Django的自动转义,一起想办法将其关闭。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#174 |
2010-04-25 12:35:38
|
一个更微妙的层面上,然而,相信在cookies中存储的任意信息绝对不是一个好主意。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#175 |
2010-04-25 12:37:18
|
你永远不知道谁一直在作怪。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#182 |
2010-04-25 12:38:12
|
他可以稍后登陆账户并且检索数据。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#187 |
2010-04-25 12:40:48
|
攻击者可以诱骗用户点击一个链接,实际上是提交包含一个XSS攻击的幌子。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#188 |
2010-04-25 12:43:44
|
如果幌子没有逃跑,用户可以再一次把恶意代码注入到用户环境。
|
|
wangnaide@gmail.com
|
2.0/chapter20/#190 |
2010-04-25 12:44:05
|
解决方案
|
|
wangnaide@gmail.com
|
2.0/chapter20/#196 |
2010-04-25 12:46:07
|
Django的session框架(参见<reference name="Chapter 14" refuri="../chapter14/"> 第十四章</reference> )根本不会容许session包含在URL中。
|
|
ySJ
|
2.0/chapter17/#11 |
2010-04-26 09:20:12
|
如果你是顺着这本书读下来的话,你应该已经多次见到“中间件”了:
|
|
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/#15 |
2010-04-26 09:59:24
|
第15章讨论的站点范围cache实际上也是由一个中间件实现,一旦该中间件发现与view相应的response已在缓存中,就不再调用对应的view函数。
|
|
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/#25 |
2010-04-26 10:51:49
|
流量很大的站点通常需要将Django部署在平衡负载的代理(参见第12章)后面。
|
|
ySJ
|
2.0/chapter17/#51 |
2010-04-26 11:15:10
|
Django项目的安装并不强制要求任何中间件,如果你愿意, <literal>MIDDLEWARE_CLASSES</literal> 可以为空。但是我们建议你激活<literal>CommonMiddleware</literal>,这点我们会马上解释。
|
|
ySJ
|
2.0/chapter17/#55 |
2010-04-26 11:19:37
|
也就是说,Django将 <literal>MIDDLEWARE_CLASSES</literal> 视为view函数外层的顺序包装:
|
|
ySJ
|
2.0/chapter17/#62 |
2010-04-26 11:22:29
|
Initializer:
|
|
ySJ
|
2.0/chapter17/#63 |
2010-04-26 11:22:38
|
__init__(self)
|
|
ySJ
|
2.0/chapter17/#76 |
2010-04-26 12:46:11
|
Request预处理函数:
|
|