ySJ
|
2.0/chapter12/#604 |
2010-04-21 11:24:16
|
可以参考<reference name="Chapter 15" refuri="../chapter15/">第十五章</reference> |
|
xbwee
|
2.0/chapter14/#693 |
2010-04-21 11:22:54
|
当你运行<literal>manage.py syncdb</literal>命令时,这些权限被添加到<literal>auth_permission</literal>数据库表中。
|
|
ySJ
|
2.0/chapter12/#593 |
2010-04-21 11:22:41
|
如果你从单独的媒体服务器上向用户提供服务,每个光顾你站点的用户只会大约10秒钟左右发出一次请求。
|
|
xbwee
|
2.0/chapter14/#654 |
2010-04-21 11:21:17
|
注意
|
|
xbwee
|
2.0/chapter14/#571 |
2010-04-21 11:20:53
|
使用这个装饰器,前面的例子可以改写为:
|
|
xbwee
|
2.0/chapter14/#567 |
2010-04-21 11:20:09
|
如果用户没有通过测试,那么<literal>user_passes_test</literal>将把用户重定向到<literal>login_url</literal> |
|
xbwee
|
2.0/chapter14/#564 |
2010-04-21 11:18:41
|
注意 user_passes_test 不会自动检查 User
是否认证,你应该自己做这件事。
|
|
xbwee
|
2.0/chapter14/#549 |
2010-04-21 11:18:08
|
视图代码就可以假定用户已经登录了。
|
|
xbwee
|
2.0/chapter14/#523 |
2010-04-21 11:11:12
|
你可以提供一个具有登陆后URL重定向功能的<literal>next</literal>隐藏域来重载它的行为。
|
|
xbwee
|
2.0/chapter14/#505 |
2010-04-21 11:08:36
|
它接受一个<literal>HttpRequest</literal>对象并且没有返回值。
|
|
xbwee
|
2.0/chapter14/#492 |
2010-04-21 11:07:33
|
Django提供两个函数来执行<literal>django.contrib.auth</literal> : <literal>authenticate()</literal>
and <literal>login()</literal>中的这些动作。
|
|
xbwee
|
2.0/chapter14/#479 |
2010-04-21 11:05:43
|
<literal>email_user(subj, msg)</literal> |
|
xbwee
|
2.0/chapter14/#471 |
2010-04-21 11:05:29
|
<literal>has_module_perms(app_label)</literal> |
|
xbwee
|
2.0/chapter14/#444 |
2010-04-21 11:05:13
|
<literal>set_password(passwd)</literal> |
|
xbwee
|
2.0/chapter14/#410 |
2010-04-21 11:04:15
|
<literal>last_login</literal> |
|
xbwee
|
2.0/chapter14/#407 |
2010-04-21 11:03:39
|
布尔值
|
|
xbwee
|
2.0/chapter14/#388 |
2010-04-21 11:03:17
|
<literal>password</literal> |
|
xbwee
|
2.0/chapter14/#375 |
2010-04-21 11:02:59
|
<literal>first_name</literal> |
|
xbwee
|
2.0/chapter14/#368 |
2010-04-21 11:02:46
|
描述
|
|
ySJ
|
2.0/chapter12/#592 |
2010-04-21 11:02:24
|
这一眼看上去是好事,但它足以眼中影响Django站点的性能。
|
|
xbwee
|
2.0/chapter14/#351 |
2010-04-21 11:02:23
|
如果用户还没登录,这就是一个 匿名 对象(细节见下)
|
|
xbwee
|
2.0/chapter14/#350 |
2010-04-21 11:02:08
|
在视图中存取users,主要用 <literal>request.user</literal> ;这个对象表示当前已登录的用户。
|
|
xbwee
|
2.0/chapter14/#296 |
2010-04-21 11:00:03
|
如果你从不使用 <literal>request.session</literal> ,
Django不会动相关数据库表的一根毛。
|
|
xbwee
|
2.0/chapter14/#295 |
2010-04-21 10:59:49
|
Session 数据在需要的时候才会读取,
|
|
ySJ
|
2.0/chapter12/#578 |
2010-04-21 10:59:43
|
更快速的硬盘可以稍微改善这个问题,但是比起RAM来说,那太贵了。
|
|
xbwee
|
2.0/chapter14/#291 |
2010-04-21 10:58:28
|
参考Python内建模块<literal>pickle</literal>获取更多信息。
|
|
ySJ
|
2.0/chapter12/#573 |
2010-04-21 10:58:27
|
最近,即使那些昂贵的RAM也相对来说可以负担的起了。
|
|
xbwee
|
2.0/chapter14/#290 |
2010-04-21 10:57:35
|
session 字典接受任何支持序列化的Python对象。
|
|
ySJ
|
2.0/chapter12/#563 |
2010-04-21 10:56:21
|
顺便提一句,谁要是有大笔大笔的钞票,请捐助一点给Django项目。
|
|
xbwee
|
2.0/chapter14/#284 |
2010-04-21 10:56:09
|
<literal>False</literal> |
|
xbwee
|
2.0/chapter14/#279 |
2010-04-21 10:55:57
|
<literal>SESSION_COOKIE_SECURE</literal> |
|
xbwee
|
2.0/chapter14/#277 |
2010-04-21 10:55:45
|
<literal>"sessionid"</literal> |
|
xbwee
|
2.0/chapter14/#272 |
2010-04-21 10:55:27
|
<literal>SESSION_COOKIE_NAME</literal> |
|
ySJ
|
2.0/chapter12/#551 |
2010-04-21 10:55:02
|
图 12-5。
|
|
xbwee
|
2.0/chapter14/#270 |
2010-04-21 10:55:01
|
<literal>None</literal> |
|
xbwee
|
2.0/chapter14/#265 |
2010-04-21 10:54:45
|
<literal>SESSION_COOKIE_DOMAIN</literal> |
|
xbwee
|
2.0/chapter14/#263 |
2010-04-21 10:54:31
|
缺省
|
|
ySJ
|
2.0/chapter12/#548 |
2010-04-21 10:54:28
|
重复了几次以后,一个大规模的构架会像图12-5。
|
|
xbwee
|
2.0/chapter14/#261 |
2010-04-21 10:54:09
|
描述
|
|
xbwee
|
2.0/chapter14/#240 |
2010-04-21 10:53:46
|
持久会话
|
|
ySJ
|
2.0/chapter12/#540 |
2010-04-21 10:53:38
|
如果单个均衡器不能达到要求,你可以增加更多的均衡器,并且使用轮询(round-robin)DNS来实现分布访问。
|
|
xbwee
|
2.0/chapter14/#225 |
2010-04-21 10:52:33
|
这是必需的,因为字典存储为一种特定的编码格式。
|
|
ySJ
|
2.0/chapter12/#527 |
2010-04-21 10:50:54
|
图 12-4:
|
|
ySJ
|
2.0/chapter12/#524 |
2010-04-21 10:50:43
|
现在我们拥有了服务器集群,我们的构架慢慢演化,越来越复杂,如图12-4。
|
|
xbwee
|
2.0/chapter14/#214 |
2010-04-21 10:50:22
|
注意
|
|
xbwee
|
2.0/chapter14/#203 |
2010-04-21 10:49:59
|
你只需在视图(view)中调用 <literal>request.session.set_test_cookie()</literal>
,并在后续的视图(view)、而不是当前的视图(view)中检查 <literal>request.session.test_cookie_worked()</literal>
。
|
|
ySJ
|
2.0/chapter12/#521 |
2010-04-21 10:49:46
|
如果你使用FastCGI,你可以采用分离前台的Web服务器,并在其他多台机器上运行FastCGI服务器的方式来实现相同的负载均衡的功能。
|
|
xbwee
|
2.0/chapter14/#202 |
2010-04-21 10:49:44
|
因此,为了使用方便,Django提供了一个简单的方法来测试用户的浏览器是否接受cookie。
|
|
ySJ
|
2.0/chapter12/#521 |
2010-04-21 10:49:36
|
如果你使用FastCGI,你可以采用分离前台的Web服务器,并在其他多台机器上运行FastCGI服务器来实现相同的负载均衡的功能。
|
|
ySJ
|
2.0/chapter12/#519 |
2010-04-21 10:48:22
|
注意
|
|