Changelog

全名 页面 提交时间 (Descending) Unsort 内容 注释 ...
ySJ 2.0/chapter16/#592 2010-04-23 16:46:25 谨奉
ySJ 2.0/chapter16/#589 2010-04-23 16:46:02 在下一章,我们将介绍Django的中间件并解释怎样写出自己的中间件。
ySJ 2.0/chapter16/#588 2010-04-23 16:45:40 这些继承框架(CSRF、身份验证系统等等)通过提供 <emphasis>中间件</emphasis> 来实现其奇妙的功能。中间件是在请求之前/后执行的可以修改请求和响应的代码,它扩展了框架。
ySJ 2.0/chapter16/#583 2010-04-23 16:43:53 一旦完成了该项工作,在模板中通过 <literal>{% load markup %}</literal> 就能使用这些过滤器。
ySJ 2.0/chapter16/#579 2010-04-23 16:43:26 例如:<literal>textile</literal>过滤器吧Textile格式的文本转换为HTML。
ySJ 2.0/chapter16/#570 2010-04-23 16:41:48 <literal>django.contrib.markup</literal>包含了一些列Django模板过滤器,每一个都实现了一中通用的标记语言。
ySJ 2.0/chapter16/#566 2010-04-23 16:40:47 可以传入整数或者表示整数的字符串。
ySJ 2.0/chapter16/#564 2010-04-23 16:40:36 254变成254th。
ySJ 2.0/chapter16/#556 2010-04-23 16:40:11 例子:
ySJ 2.0/chapter16/#550 2010-04-23 16:39:48 可以传入整数或者表示整数的字符串。
ySJ 2.0/chapter16/#540 2010-04-23 16:39:32 例子:
ySJ 2.0/chapter16/#533 2010-04-23 16:38:49 可以传入整数或者表示整数的字符串。
ySJ 2.0/chapter16/#523 2010-04-23 16:38:19 例子:
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/#500 2010-04-23 16:33:50 <literal>django.contrib.humanize</literal>包含了一些是数据更人性化的模板过滤器。
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/#493 2010-04-23 16:26:53 在此情况下,表单提交永远无法成功。
ySJ 2.0/chapter16/#492 2010-04-23 16:26:29 如果你的应用程序以某种非常规的方法创建 HTML 页面(例如:在 Javascript 的<literal>document.write</literal>语句中发送 HTML 片段),你可能会绕开了向表单添加隐藏字段的过滤器。
ySJ 2.0/chapter16/#490 2010-04-23 16:25:51 (参阅第 14 章了解更多关于会话的内容。)如果你使用了自定义会话或者身份验证框架手动管理会话 cookies,该中间件将帮不上你的忙。
ySJ 2.0/chapter16/#475 2010-04-23 16:24:02 终止请求。
ySJ 2.0/chapter16/#474 2010-04-23 16:23:48 403 错误页面的内容是检测到了跨域请求伪装。
ySJ 2.0/chapter16/#474 2010-04-23 16:23:36 403 错误页面的内容检测到了跨域请求伪装。
ySJ 2.0/chapter16/#464 2010-04-23 16:21:57 参见第十五章的“MIDDLEWARE_CLASSES顺序”小节以了解更多。
ySJ 2.0/chapter16/#463 2010-04-23 16:20:58 同时,它也必须在响应被压缩或解压之前对响应结果进行处理,因此 <literal>CsrfMiddleware</literal> 必须在 <literal>GZipMiddleware</literal> 之后执行。一旦将它添加到<literal>MIDDLEWARE_CLASSES</literal>设置中,你就完成了工作。
ySJ 2.0/chapter16/#450 2010-04-23 16:19:20 这样,从服务器端访问表单时,可以检查该保密的字段。不吻合时可以引发一个错误。
ySJ 2.0/chapter16/#449 2010-04-23 16:19:02 的form标签一个隐藏字段,它的值是保密的并根据用户进程的 ID 生成。
ySJ 2.0/chapter16/#448 2010-04-23 16:18:04 第二步就是给所有 <literal>POST</literal>
ySJ 2.0/chapter16/#449 2010-04-23 16:17:05 这样,从服务器端访问表单时,可以检查该保密的字段。
ySJ 2.0/chapter16/#436 2010-04-23 16:15:37 <literal>confirm</literal>
ySJ 2.0/chapter16/#434 2010-04-23 16:14:05 这就确保了用简单的指向<literal>example.com/logout</literal><literal>POST</literal> 不会让用户登出;要让用户登出,用户必须通过 <literal>POST</literal><literal>example.com/logout</literal> 发送请求
ySJ 2.0/chapter16/#435 2010-04-23 16:12:08 并且发送一个值为'true'的POST变量。
ySJ 2.0/chapter16/#423 2010-04-23 16:09:09 很明显,登出一个邮件网站也不是什么严重的安全问题。但是同样的攻击可能针对任何相信用户的站点,比如在线银行和电子商务网站。这样的话可能在用户不知情的情况下就下订单付款了。
ySJ 2.0/chapter16/#418 2010-04-23 16:03:04 假定你已经登录到 <literal>example.com</literal> 的网页邮件账号。该网站有一个指向<literal>example.com/logout</literal>的注销按钮。就是说,注销其实就是访问<literal>example.com/logout</literal>
ySJ 2.0/chapter16/#418 2010-04-23 15:59:46 假定你已经登录到 <literal>example.com</literal> 的网页邮件账号。该网站有一个只向<literal>example.com/logout</literal>的注销按钮。就是说,注销其实就是访问<literal>example.com/logout</literal>
ySJ 2.0/chapter16/#414 2010-04-23 15:56:30 乍一看,要理解这种攻击技术比较困难,因此我们在本节将使用两个例子来说明。
ySJ 2.0/chapter16/#412 2010-04-23 15:54:54 CSRF, 又叫会话跳转,是一种网站安全攻击技术。
ySJ 2.0/chapter16/#405 2010-04-23 15:54:17 重定向表现为<literal>django/contrib/redirects/models.py</literal> 中的一个标准 Django 模型。因此,你可以通过Django数据库API来存取重定向对象,例如:
ySJ 2.0/chapter16/#403 2010-04-23 15:53:16 同过Python API
ySJ 2.0/chapter16/#398 2010-04-23 15:51:47 通过管理界面
ySJ 2.0/chapter16/#389 2010-04-23 15:50:48 注意
ySJ 2.0/chapter16/#376 2010-04-23 15:50:05 (查阅前面的“多站点”一节可了解关于 <literal>SITE_ID</literal> 和多站点框架的更多细节) 然后,它将执行以下两个步骤:
ySJ 2.0/chapter16/#371 2010-04-23 15:49:00 要了解更多信息,请参阅“增加、变更和删除重定向”一节。
ySJ 2.0/chapter16/#368 2010-04-23 15:48:33 这是一个简单的查询表,只有<literal>site_id</literal>、old_path和new_path三个字段。
ySJ 2.0/chapter16/#367 2010-04-23 15:48:13 <literal>manage.py syncdb</literal> 在数据库中创建了一个 <literal>django_redirect</literal> 表。
ySJ 2.0/chapter16/#365 2010-04-23 15:47:26 运行 <literal>manage.py syncdb</literal> 命令将所需的表添加到数据库中。
ySJ 2.0/chapter16/#350 2010-04-23 15:44:27 注意我们使用了<literal>safe</literal>模板过滤器来允许<literal>flatpage.content</literal>引入原始HTML而不必转义。
ySJ 2.0/chapter16/#340 2010-04-23 15:40:35 缺省情况下,系统使用模板 <literal>flatpages/default.html</literal> 来解析简单页面,但你也可以通过设定 <literal>FlatPage</literal> 对象的 <literal>template_name</literal> 字段来更改特定简单页面的模板。
ySJ 2.0/chapter16/#335 2010-04-23 15:39:40 前面已经提到,简单页面表现为 <literal>django/contrib/flatpages/models.py</literal> 中的标准 Django 模型。这样,你就可以使用Django数据库API来存取简单页面对象,例如:
ySJ 2.0/chapter16/#322 2010-04-23 15:33:52 通常,你可以把 <literal>FlatpageFallbackMiddleware</literal> 放在列表最后,因为它是最后的办法。
2.0/chapter07/#451 2010-04-23 15:33:34 一些提交的消息只有一两个单词,我们无法得知详细的信息。 根据下面的代码 应该是通过空格拆分英文单词的做法
« < 4 5 6 7 8 9 10 > » 96 pages