15325@qq.com
|
2.0/chapter04/#849 |
2009-10-28 15:35:40
|
你现在已经掌握了模板系统的基本知识。
|
|
15325@qq.com
|
2.0/chapter04/#847 |
2009-10-28 15:34:59
|
下一章
|
|
15325@qq.com
|
2.0/chapter04/#91 |
2009-10-28 15:31:34
|
当你运行命令:python manage.py shell,它将帮你照看DJANGO_SETTINGS_MODULE。
|
|
15325@qq.com
|
2.0/chapter04/#89 |
2009-10-28 15:28:25
|
Django搜索DJANGO_SETTINGS_MODULE环境变量,它被设置在setting.py中。例如,假设mysite在你的Python搜索路径中,那么DJANGO_SETTINGS_MODULE应该被设置为:'mysite.settings'。
|
|
15325@qq.com
|
2.0/chapter04/#89 |
2009-10-28 15:28:09
|
Django搜索DJANGO_SETTINGS_MODULE环境变量,它背设置在setting.py中。例如,假设mysite在你的Python搜索路径中,那么DJANGO_SETTINGS_MODULE应该被设置为:'mysite.settings'。
|
|
15325@qq.com
|
2.0/chapter04/#88 |
2009-10-28 15:24:13
|
如果你想知道,这里将向你解释它背后是如何工作的。
|
|
15325@qq.com
|
2.0/chapter04/#88 |
2009-10-28 15:23:48
|
如果你想知道,这里将向你展示它背后是如何工作的。
|
|
15325@qq.com
|
2.0/chapter04/#67 |
2009-10-28 15:20:30
|
调用模板对象的render方法,并且传入一套变量context。它将返回一个基于模板的展现字符串,模板中的变量和标签会被context值替换。
|
|
15325@qq.com
|
2.0/chapter04/#58 |
2009-10-28 15:07:30
|
让我们深入研究模板系统,你将会明白它是如何工作的。但我们暂不打算将它与先前创建的视图结合在一起。
|
|
15325@qq.com
|
2.0/chapter04/#50 |
2009-10-28 15:04:45
|
过滤器是用管道符(|)来调用的,具体可以参见Unix管道符。
|
|
15325@qq.com
|
2.0/chapter04/#49 |
2009-10-28 15:01:04
|
如这个例子中的{{ship_date|date:"F j, Y" }},我们将变量ship_date传递给date过滤器,同时指定参数"F j,Y"。date过滤器根据参数进行格式输出。
|
|
15325@qq.com
|
2.0/chapter06/#490 |
2009-11-16 15:47:37
|
赋予一个用户修改用户的权限,本质上说就是把他变成一个超级用户。
|
|
15325@qq.com
|
2.0/chapter06/#496 |
2009-11-16 15:49:23
|
何时、怎样使用管理界面?何时又不使用呢?
|
|
15325@qq.com
|
2.0/chapter06/#498 |
2009-11-16 15:50:11
|
经过这一章的学习,你应该对Django管理工具有所认识。
|
|
15325@qq.com
|
2.0/chapter06/#499 |
2009-11-16 15:53:07
|
但是我们需要表明一个观点:<emphasis> 什么时候</emphasis> 、<emphasis> 为什么</emphasis> 用,以及什么时候又<emphasis> 不</emphasis> 用。
|
|
15325@qq.com
|
2.0/chapter06/#496 |
2009-11-16 15:53:40
|
何时、为什么使用管理界面?何时又不使用呢?
|
|
15325@qq.com
|
2.0/chapter06/#508 |
2009-11-16 16:05:06
|
记者检查管理界面,尽早指出缺少或多余的字段。
|
|
15325@qq.com
|
2.0/chapter06/#509 |
2009-11-16 16:10:21
|
开发者来回地修改模块。
|
|
15325@qq.com
|
2.0/chapter06/#511 |
2009-11-16 16:11:38
|
当模块认可后,记者就开始用管理界面录入数据。
|
|
15325@qq.com
|
2.0/chapter06/#484 |
2009-11-16 15:45:44
|
后面这种基于对象级别的权限设置比较复杂,并且超出了本书的覆盖范围,但你可以在Django documentation中寻找答案。
|
|
15325@qq.com
|
2.0/chapter06/#483 |
2009-11-16 15:43:35
|
请注意,这些权限是定义在模块级别上,而不是对象级别上的。据个例子,你可以让小强修改任何图书,但是不能让他仅修改由机械工业出版社出版的图书。
|
|
15325@qq.com
|
2.0/chapter04/#49 |
2009-10-28 14:58:14
|
temp
|
|
15325@qq.com
|
2.0/chapter04/#48 |
2009-10-28 14:51:08
|
最后,这个模板的第二段中有一个关于<emphasis>filter</emphasis>过滤器的例子,它是一种最便捷的转换变量输出格式的方式。
|
|
15325@qq.com
|
2.0/chapter04/#46 |
2009-10-28 14:31:43
|
在这里,tag标签检查ordered_warranty值是否为True。如果是,模板系统将显示{% if ordered_warranty %}和{%
else %}之间的内容;否则将显示{% else
%}和{% endif %}之间的内容。{% else %}是可选的。
|
|
15325@qq.com
|
2.0/chapter04/#44 |
2009-10-28 14:27:31
|
for标签类似Python的for语句,可让你循环访问序列里的每一个项目。
|
|
15325@qq.com
|
2.0/chapter04/#23 |
2009-10-28 14:22:07
|
模板是一个文本,用开分离文档和数据。
|
|
15325@qq.com
|
2.0/chapter06/#481 |
2009-11-16 15:29:14
|
当你创建一个用户时,它没有任何权限,该有什么权限是由你决定的。
|
|
15325@qq.com
|
2.0/chapter06/#482 |
2009-11-16 15:32:56
|
例如,你可以给一个用户添加和修改publishers的权限,而不给他删除的权限。
|
|
15325@qq.com
|
2.0/chapter06/#473 |
2009-11-16 15:34:32
|
超级用户标志,它赋予用户在管理界面中添加、修改和删除任何项目的权限。
|
原文可能有笔误,create可能是change/edit
|
15325@qq.com
|
2.0/chapter06/#512 |
2009-11-16 16:12:49
|
同时,程序员可以专注于开发公众访问视图和模板(有趣的部分)。
|
|
15325@qq.com
|
2.0/chapter04/#855 |
2009-10-28 15:37:00
|
下一章将讲述如何与数据库打交道。
|
|
15325@qq.com
|
2.0/chapter06/#227 |
2009-11-11 15:53:48
|
这里有个第五章中用过的例子:
|
|
15325@qq.com
|
2.0/chapter06/#438 |
2009-11-16 12:00:51
|
<literal>filter_horizontal</literal>和<literal>filter_vertical</literal>选项只能用在<literal>多对多字段</literal> 上, 而不能用于 <literal>ForeignKey</literal>字段。
|
|
15325@qq.com
|
2.0/chapter06/#439 |
2009-11-16 12:12:49
|
默认地,管理工具使用<literal> 下拉框</literal> 来展现<literal> 外键</literal> 字段。但是,正如<literal> 多对多字段</literal> 那样,有时候你不想忍受因装载并显示这些选项而产生的大量开销。
|
|
15325@qq.com
|
2.0/chapter06/#440 |
2009-11-16 12:19:06
|
例如,我们的book数据库膨胀到拥有数千条publishers的记录,以至于book的添加页面装载时间较久,因为它必须把每一个publishe都装载并显示在<literal> 下拉框</literal> 中。
|
|
15325@qq.com
|
2.0/chapter06/#440 |
2009-11-16 12:19:38
|
例如,我们的book数据库膨胀到拥有数千条publishers的记录,以致于book的添加页面装载时间较久,因为它必须把每一个publishe都装载并显示在<literal> 下拉框</literal> 中。
|
|
15325@qq.com
|
2.0/chapter06/#442 |
2009-11-16 12:27:25
|
解决这个问题的办法是使用<literal> raw_id_fields</literal> 选项。它是一个包含外键字段名称的元组,它包含的字段将被展现成文本框(<literal></literal> ),而不再是<literal> 下拉框</literal> 。见图 6-14。
|
|
15325@qq.com
|
2.0/chapter06/#442 |
2009-11-16 12:27:34
|
解决这个问题的办法是使用<literal> raw_id_fields</literal> 选项。它是一个包含外键字段名称的元组,它包含的字段将被展现成文本框(<literal></literal> ),而不再是<literal> 下拉框</literal> 。见图 6-14。
|
|
15325@qq.com
|
2.0/chapter06/#442 |
2009-11-16 12:27:53
|
解决这个问题的办法是使用<literal> raw_id_fields</literal> 选项。它是一个包含外键字段名称的元组,它包含的字段将被展现成<literal> 文本框</literal> ,而不再是<literal> 下拉框</literal> 。见图 6-14。
|
|
15325@qq.com
|
2.0/chapter06/#446 |
2009-11-16 12:28:30
|
图 6-14.
|
|
15325@qq.com
|
2.0/chapter06/#436 |
2009-11-16 11:59:14
|
至于使用哪个,只是个人喜好问题。
|
|
15325@qq.com
|
2.0/chapter06/#435 |
2009-11-16 11:57:41
|
它像<literal>filter_horizontal</literal>那样工作,除了控件都是垂直排列,而不是水平排列的。
|
|
15325@qq.com
|
2.0/chapter06/#424 |
2009-11-16 11:46:15
|
刷新books编辑页面,你会看到Author区中有一个精巧的JavaScript过滤器,它允许你检索选项,然后将选中的authors从Available框移到Chosen框,还可以移回来。
|
|
15325@qq.com
|
2.0/chapter06/#427 |
2009-11-16 11:47:10
|
图 6-13.
|
|
15325@qq.com
|
2.0/chapter06/#428 |
2009-11-16 11:47:48
|
含filter_horizontal的book编辑页面
|
|
15325@qq.com
|
2.0/chapter06/#424 |
2009-11-16 11:48:32
|
刷新book编辑页面,你会看到Author区中有一个精巧的JavaScript过滤器,它允许你检索选项,然后将选中的authors从Available框移到Chosen框,还可以移回来。
|
|
15325@qq.com
|
2.0/chapter06/#430 |
2009-11-16 11:49:49
|
我们强烈建议针对那些拥有十个以上选项的<literal> 多对多字段</literal> 使用<literal>filter_horizontal</literal>。
|
|
15325@qq.com
|
2.0/chapter06/#431 |
2009-11-16 11:50:35
|
这比多选框好用多了。
|
|
15325@qq.com
|
2.0/chapter06/#432 |
2009-11-16 11:52:29
|
你可以在多个字段上使用<literal>filter_horizontal</literal>,只需在这个元组中指定每个字段的名字。
|
|
15325@qq.com
|
2.0/chapter06/#434 |
2009-11-16 11:53:03
|
<literal>ModelAdmin</literal>类还支持<literal>filter_vertical</literal>选项。
|
|