xbwee
|
2.0/chapter17/#209 |
2010-04-21 16:32:06
|
<literal>django.middleware.gzip.GZipMiddleware</literal>
.
|
|
xbwee
|
2.0/chapter17/#174 |
2010-04-21 16:31:43
|
它在每个传入的 <literal>HttpRequest</literal>
对象中添加代表当前登录用户的 <literal>request.user</literal> 属性。
|
|
xbwee
|
2.0/chapter17/#181 |
2010-04-21 16:30:48
|
<literal>django.middleware.common.CommonMiddleware</literal>
.
|
|
xbwee
|
2.0/chapter17/#180 |
2010-04-21 16:30:38
|
中间件类:
|
|
xbwee
|
2.0/chapter17/#171 |
2010-04-21 16:30:22
|
<literal>django.contrib.auth.middleware.AuthenticationMiddleware</literal>
.
|
|
xbwee
|
2.0/chapter17/#162 |
2010-04-21 16:30:07
|
<reference name="http://code.djangoproject.com/wiki/ContributedMiddleware" refuri="http://code.djangoproject.com/wiki/ContributedMiddleware">http://code.djangoproject.com/wiki/ContributedMiddleware</reference> |
|
xbwee
|
2.0/chapter17/#140 |
2010-04-21 16:29:49
|
这个response对象可以是传入函数的那一个原始对象(通常已被修改),也可以是全新生成的。
|
|
xbwee
|
2.0/chapter17/#143 |
2010-04-21 16:29:26
|
process_exception(self, request, exception)
|
|
xbwee
|
2.0/chapter17/#104 |
2010-04-21 16:28:31
|
<literal>request</literal> |
|
xbwee
|
2.0/chapter17/#90 |
2010-04-21 16:28:11
|
process_view(self, request, view, args, kwargs)
|
|
xbwee
|
2.0/chapter17/#33 |
2010-04-21 16:27:45
|
尽管HTTP头是<literal>X-Forwarded-For</literal>,Django把它看作<literal>request.META['HTTP_X_FORWARDED_FOR']</literal>。除了<literal>content-length</literal>和 <literal>content-type</literal>,在请求中的任何HTTP头都被转换为<literal>request.META</literal>,所有字符转换为大写,所有连字符转换为下划线,并且在名字前添加一个<literal>HTTP_</literal>前缀。
|
|
ySJ
|
2.0/chapter14/#11 |
2010-04-21 16:22:34
|
互联网服务于人而不是机器。
|
|
ySJ
|
2.0/chapter14/#10 |
2010-04-21 16:22:22
|
这忽略了重要的一点:
|
|
ySJ
|
2.0/chapter14/#9 |
2010-04-21 16:21:33
|
浏览器的背后都是活生生的人(至少某些时候是)。
|
|
ySJ
|
2.0/chapter14/#8 |
2010-04-21 16:21:12
|
这当然不对。
|
|
ySJ
|
2.0/chapter14/#5 |
2010-04-21 16:18:41
|
我们有意的避开了Web开发中极其重要的方面。
|
|
ySJ
|
2.0/chapter13/#546 |
2010-04-21 16:17:02
|
sessions, users 和authentication。
|
|
ySJ
|
2.0/chapter13/#545 |
2010-04-21 16:16:52
|
<reference name="Chapter 14" refuri="../chapter14/"> 第十四章</reference> 查看创建用户自定义站点需要的工具:
|
|
ySJ
|
2.0/chapter13/#544 |
2010-04-21 16:16:33
|
下面, 我们要继续深入Django提供给你的内置工具。
|
|
ySJ
|
2.0/chapter13/#539 |
2010-04-21 16:15:59
|
例如:
|
|
ySJ
|
2.0/chapter13/#538 |
2010-04-21 16:15:40
|
最后,如果<literal>'django.contrib.sitemaps'</literal>包含在你的<literal>INSTALLED_APPS</literal>下,那么你的<literal>manage.py</literal>将新增一个<literal>ping_google</literal>命令,这在命令行下很有用处。
|
|
ySJ
|
2.0/chapter13/#536 |
2010-04-21 16:12:03
|
该方法使用Http直接请求Google服务器,从而减少每次调用save()时占用的网络带宽。
|
|
ySJ
|
2.0/chapter13/#535 |
2010-04-21 16:11:27
|
一个更有效的解决方案是用 <literal>cron</literal> 脚本或任务调度表来调用 <literal>ping_google()</literal>。
|
|
ySJ
|
2.0/chapter13/#528 |
2010-04-21 16:10:20
|
<literal>ping_google()</literal> 有一个可选的参数 <literal>sitemap_url</literal> ,它应该是你的站点地图(也就是:<literal>'/sitemap.xml'</literal>)的URL绝对地址。如果这个参数空缺,<literal>ping_google()</literal>会尝试通过反向查询你的URLconf来生成一个。
|
|
ySJ
|
2.0/chapter13/#524 |
2010-04-21 16:07:41
|
当你的sitemap变化的时候,你会想通知Google,以便让它对你的站点进行重新索引。
|
|
ySJ
|
2.0/chapter13/#520 |
2010-04-21 16:06:35
|
这将自动生成一个 <literal>sitemap.xml</literal> 文件, 它同时引用 <literal>sitemap-flatpages.xml</literal> 和 <literal>sitemap-blog.xml</literal>。<literal>Sitemap</literal> 类和 <literal>sitemaps</literal> 字典根本没有更改.
|
|
ySJ
|
2.0/chapter13/#512 |
2010-04-21 16:04:49
|
您在您的URLconf 中使用了两个视图:
|
|
ySJ
|
2.0/chapter13/#502 |
2010-04-21 16:03:52
|
你也可以把<literal>priority</literal>和<literal>changefreq</literal>关键字参数传给<literal>GenericSitemap</literal>的构造器以为所有URL指定这些属性。
|
|
ySJ
|
2.0/chapter13/#501 |
2010-04-21 16:00:56
|
也可以用 <literal>date_field</literal> 来指明从 <literal>queryset</literal> 中取回的对象的日期域。这会被用作站点地图中的 lastmod 属性。
|
|
ySJ
|
2.0/chapter13/#497 |
2010-04-21 15:59:36
|
<literal>GenericSitemap</literal> 与所有的通用视图一同工作(详见第11章)。
|
|
ySJ
|
2.0/chapter13/#481 |
2010-04-21 15:57:54
|
取值范围在 <literal>0.0</literal> and <literal>1.0</literal> 之间,用来表明优先级。页面的默认优先级是<literal>0.5</literal>;参看文档<reference name="http://sitemaps.org/" refuri="http://sitemaps.org/">http://sitemaps.org/</reference>以了解更多。
|
|
ySJ
|
2.0/chapter13/#460 |
2010-04-21 15:56:12
|
对象的最后修改日期, 作为一个Pythondatetime对象。
|
|
ySJ
|
2.0/chapter13/#459 |
2010-04-21 15:55:51
|
<literal>lastmod</literal> (可选):
|
|
ySJ
|
2.0/chapter13/#455 |
2010-04-21 15:55:09
|
'http://example.com/foo/bar/'
|
|
ySJ
|
2.0/chapter13/#454 |
2010-04-21 15:54:52
|
差的:
|
|
ySJ
|
2.0/chapter13/#452 |
2010-04-21 15:54:40
|
<literal>'example.com/foo/bar/'</literal> |
|
ySJ
|
2.0/chapter13/#451 |
2010-04-21 15:54:31
|
差的:
|
|
ySJ
|
2.0/chapter13/#449 |
2010-04-21 15:54:13
|
<literal>'/foo/bar/'</literal> |
|
ySJ
|
2.0/chapter13/#448 |
2010-04-21 15:54:03
|
好的:
|
|
ySJ
|
2.0/chapter13/#435 |
2010-04-21 15:52:02
|
如同 <literal>Feed</literal> 类一样, <literal>Sitemap</literal> 成员既可以是方法,也可以是属性。
|
|
ySJ
|
2.0/chapter13/#423 |
2010-04-21 15:50:17
|
例如,一个<literal>Sitemap</literal>类可以展现你博客上的所有项目,另一个可以展现你日程表上的所有事件。
|
|
ySJ
|
2.0/chapter13/#422 |
2010-04-21 15:48:41
|
<literal>Sitemap</literal>是一个展示sitemap里一段项目的简单的Python类。
|
|
ySJ
|
2.0/chapter13/#422 |
2010-04-21 15:48:27
|
<literal>Sitemap</literal> 类是一个展示sitemap里一段项目的简单的Python类。
|
|
ySJ
|
2.0/chapter13/#418 |
2010-04-21 15:47:07
|
sitemaps}。<literal>sitemap</literal>是把小段的标签(如<literal>blog</literal>或者<literal>news</literal>)映射到<literal>Sitemap</literal>(如<literal>BlogSitemap</literal>或者<literal>NewsSitemap</literal>)的字典。它也会映射到<emphasis>Sitemap</emphasis>的<literal>实例</literal>(如<literal>BlogSitemap(some_var)</literal>)。
|
|
ySJ
|
2.0/chapter13/#417 |
2010-04-21 15:38:25
|
{'sitemaps':
|
|
ySJ
|
2.0/chapter13/#409 |
2010-04-21 15:37:35
|
这行通知Django当客户端索取<literal>/sitemap.xml</literal>时创建sitemap。注意<literal>sitemap.xml</literal>中的"."被反斜杠转移了,因为它在正则表达式里有特殊含义。
|
|
ySJ
|
2.0/chapter13/#404 |
2010-04-21 15:35:04
|
初始化
|
|
ySJ
|
2.0/chapter13/#402 |
2010-04-21 15:34:53
|
它需要加入到<literal>INSTALLED_APPS</literal>中的唯一原因是: 这样<literal>load_template_source</literal>模板加载器可以找到默认的模板。
|
|
ySJ
|
2.0/chapter13/#401 |
2010-04-21 15:34:21
|
sitemap 应用程序没有安装任何数据库表。
|
|
ySJ
|
2.0/chapter13/#399 |
2010-04-21 15:33:57
|
注意
|
|