|
2.0/chapter09/#165 |
2009-12-31 10:29:11
|
html自动转意
|
|
|
2.0/chapter08/#413 |
2010-01-01 17:22:14
|
优化后的代码和前面的功能一样,但是减少了代码冗余
|
|
|
2.0/chapter08/#414 |
2010-01-01 17:25:09
|
现在我们建立了一个漂亮,通用的函数requires_login()来帮助我们修饰所有需要它来验证的视图
|
|
|
2.0/chapter08/#410 |
2010-01-01 17:29:08
|
现在,我们可以从views中去掉if not request.user.is_authenticated()验证.我们可以在URLconf中很容易的用requires_login来包装实现.
|
|
|
2.0/chapter08/#407 |
2010-01-01 17:34:53
|
函数requires_login,传入一个视图函数view,然后返回一个新的视图函数new_view.这个新的视图函数new_view在函数requires_login内定义
|
|
|
2.0/chapter08/#408 |
2010-01-01 17:40:14
|
处理request.user.is_authenticated()这个验证,从而决定是否授权原来的view函数
|
|
|
2.0/chapter08/#408 |
2010-01-01 17:41:26
|
处理request.user.is_authenticated()这个验证,从而决定是否执行原来的view函数
|
|
|
2.0/chapter08/#442 |
2010-01-01 17:53:54
|
在第一个URLconf中,r'^weblog/'匹配
|
|
|
2.0/chapter08/#443 |
2010-01-01 17:55:23
|
因为它有一个include(),django去掉了匹配的部,在这个例子中匹配的部分是'weblog/'
|
|
|
2.0/chapter08/#444 |
2010-01-01 17:56:58
|
剩下的部分是/2007/ (最前面有一个斜杠),不匹配mysite.blog.urls中的任何一行.
|
|
|
2.0/chapter08/#441 |
2010-01-01 17:57:53
|
/weblog//2007/(包含两个斜杠)
|
|
|
2.0/chapter08/#425 |
2010-01-01 18:00:43
|
在前面第6章介绍Django的admin模块时我们曾经见过include.
|
|
|
2.0/chapter08/#426 |
2010-01-01 18:01:51
|
admin模块有他自己的URLconf,你仅仅只需要在你自己的代码中加入include就可以了.
|
|
|
2.0/chapter08/#400 |
2010-01-01 18:16:19
|
(注意,虽然我们还没有讲到request.user,但是14章将要讲到它.就如你所想像的,request.user描述当前用户是登陆的还是匿名)
|
|
|
2.0/chapter08/#439 |
2010-01-01 18:18:31
|
.
|
|
|
2.0/chapter08/#380 |
2010-01-01 18:25:08
|
如果你在函数定义时,只在参数前面加一个*号,所有传递给函数的参数将会保存为一个元组.
|
|
|
2.0/chapter08/#381 |
2010-01-01 18:26:19
|
如果你在函数定义时,在参数前面加两个*号,所有传递给函数的关键字参数,将会保存为一个字典
|
|
|
2.0/chapter08/#391 |
2010-01-01 18:30:05
|
(我们通过指定pop的缺省值为None,来避免由于一个或者多个关键字缺失带来的KeyError)
|
|
|
2.0/chapter08/#378 |
2010-01-01 18:35:37
|
这里,我们重构method_splitter(),去掉了GET和POST两个关键字参数,改而支持使用*args和和**kwargs(注意*号)
|
|
|
2.0/chapter09/#179 |
2010-01-02 13:12:11
|
类似的,如果name包含一个 <literal>'<'</literal> 字符,就会变成这样?
|
|
|
2.0/chapter09/#261 |
2010-01-02 13:24:32
|
就像我们前面提到的,过滤器也可以是字符串.
|
|
|
2.0/chapter09/#264 |
2010-01-02 13:28:59
|
所有字符常量没有经过转义就被插入模板,就如同它们都经过了<literal> safe</literal> 过滤
|
|
|
2.0/chapter09/#265 |
2010-01-02 13:31:39
|
这是由于字符常量完全由模板作者决定,因此编写模板的时候必须确保文件的正确性.
|
|
|
2.0/chapter09/#267 |
2010-01-02 13:32:19
|
这意味着你必须这样写
|
|
|
2.0/chapter09/#270 |
2010-01-02 13:32:39
|
而不是这样
|
|
|
2.0/chapter09/#273 |
2010-01-02 13:34:19
|
这对来源于自变量的数据不起作用
|
|
|
2.0/chapter09/#273 |
2010-01-02 13:35:48
|
来源于自变量的数据不受影响
|
|
|
2.0/chapter09/#274 |
2010-01-02 13:44:30
|
如果必要,变量内容会自然的转义,因为它们始终都在模板作者的控制下.
|
|
|
2.0/chapter09/#236 |
2010-01-02 13:47:57
|
为了控制模板的自动转意,用标签<literal>autoescape </literal> 来包装整个模板(或者模板中常用的部分),就像这样
|
|
|
2.0/chapter09/#239 |
2010-01-02 13:51:28
|
<literal>autoescape </literal> 标签有两个参数<literal> on</literal> 和<literal> off</literal> |
|
|
2.0/chapter09/#240 |
2010-01-02 14:09:47
|
同时,你可能想阻止一部分自动转意,对另一部分自动转意
|
|
|
2.0/chapter09/#244 |
2010-01-02 14:16:03
|
auto-escaping 标签的作用域不公可以影响到当前模板还可以通过<literal>include </literal> 标签作用到其他标签,就像block标签一样
|
|
|
2.0/chapter09/#248 |
2010-01-02 14:23:14
|
由于在base模板中自动转意被关闭,所以在child模板中自动转意也会关闭.因此,在下面一段HTML被提交时,变量<literal>greeting </literal> 值就为字符串<literal>Hello! </literal> |
|
|
2.0/chapter09/#253 |
2010-01-02 14:24:04
|
通常,模板作者没必要为自动转意担心
|
|
|
2.0/chapter09/#254 |
2010-01-02 14:27:32
|
基于pyhton的开发者(编写VIEWS视图和自定义过滤器)只需要考虑哪些数据不需要被转意,适时的标记数据,就可以让它们在模板中工作
|
|
|
2.0/chapter09/#256 |
2010-01-02 14:30:15
|
如果你正在编写一个模板而不知道是否要关闭自动转意,那就为所有需要转意的变量添加一个<literal> escape</literal> 过滤器.
|
|
|
2.0/chapter09/#236 |
2010-01-02 14:33:45
|
为了控制模板的自动转意,用标签autoescape来包装整个模板(或者模板中常用的部分),就像这样
|
|
|
2.0/chapter09/#239 |
2010-01-02 14:34:45
|
autoescape 标签有两个参数on和off
|
|
|
2.0/chapter09/#244 |
2010-01-02 14:35:31
|
auto-escaping 标签的作用域不仅可以影响到当前模板还可以通过include标签作用到其他标签,就像block标签一样
|
|
|
2.0/chapter09/#248 |
2010-01-02 14:36:11
|
由于在base模板中自动转意被关闭,所以在child模板中自动转意也会关闭.因此,在下面一段HTML被提交时,变量greeting的值就为字符串Hello!
|
|
|
2.0/chapter09/#256 |
2010-01-02 14:37:02
|
如果你正在编写一个模板而不知道是否要关闭自动转意,那就为所有需要转意的变量添加一个escape过滤器.
|
|
|
2.0/chapter09/#264 |
2010-01-02 14:37:30
|
所有字符常量没有经过转义就被插入模板,就如同它们都经过了safe过滤
|
|
|
2.0/chapter09/#265 |
2010-01-02 14:38:16
|
这是由于字符常量完全由模板作者决定,因此编写模板的时候必须确保文本的正确性.
|
|
|
2.0/chapter09/#253 |
2010-01-02 15:34:25
|
通常,模板作者没必要为自动转意担心.
|
|
|
2.0/chapter09/#257 |
2010-01-02 15:37:55
|
当自动转意开启时,使用escape过滤器似乎会两次转意数据,但其实没有任何危险.因为escape过滤器不作用于被转意的变量.
|
|
|
2.0/chapter10/#184 |
2010-01-05 16:00:42
|
例如,我们为Book模型定义了一个title_count()方法,它需要一个关键字,返回包含这个关键字的书的数量.
|
|
|
2.0/chapter10/#193 |
2010-01-05 16:02:42
|
我们建立了一个BookManager类,它继承了django.db.models.Manager.只拥有一个title_count()方法用来做统计.
|
|
|
2.0/chapter10/#194 |
2010-01-05 16:03:27
|
注意,这个方法使用了self.filter(),此处self指manager本身
|
|
|
2.0/chapter10/#196 |
2010-01-05 16:04:08
|
我们把BookManager()赋值给模型的objects属性
|
|
|
2.0/chapter10/#196 |
2010-01-05 16:04:40
|
我们把BookManager()赋值给模型的objects属性.
|
|