ySJ
|
2.0/chapter16/#318 |
2010-04-23 15:32:59
|
注意
|
|
ySJ
|
2.0/chapter16/#314 |
2010-04-23 15:32:35
|
模板解析过程中,它实际用的是<literal>RequestContext</literal>。
|
|
ySJ
|
2.0/chapter16/#313 |
2010-04-23 15:31:30
|
同时,它把一个简单的上下文变量<literal>flatpage</literal>(一个简单页面对象)传递给模板。
|
|
ySJ
|
2.0/chapter16/#312 |
2010-04-23 15:31:04
|
如果找到一个匹配项,它将载入该简单页面的模板(如果没有指定的话,将使用默认模板 <literal>flatpages/default.html</literal> )。
|
|
ySJ
|
2.0/chapter16/#309 |
2010-04-23 15:29:26
|
每当 Django 引发 404 错误,作为最后的办法,该中间件将根据所请求的 URL 检查简单页面数据库。
|
|
ySJ
|
2.0/chapter16/#306 |
2010-04-23 15:28:08
|
要了解更多内容,请查阅“添加、修改和删除简单页面”一节。
|
|
ySJ
|
2.0/chapter16/#303 |
2010-04-23 15:26:26
|
该项设置集成了 Django 多站点框架,该框架在本章的“多站点”一节中有所阐述。
|
|
ySJ
|
2.0/chapter16/#300 |
2010-04-23 15:25:06
|
该设置项集成了 Djangos 验证/用户框架,该框架于第十四章详述。
|
|
ySJ
|
2.0/chapter16/#293 |
2010-04-23 15:24:14
|
框架不对它作任何特殊处理。
|
|
ySJ
|
2.0/chapter16/#289 |
2010-04-23 15:23:06
|
框架不对它作任何特殊处理。
|
|
ySJ
|
2.0/chapter16/#277 |
2010-04-23 15:19:54
|
该应用捆绑的 <literal>FlatPage</literal> 模型在 <literal>django/contrib/flatpages/models.py</literal> 进行定义,如下所示:
|
|
ySJ
|
2.0/chapter16/#267 |
2010-04-23 15:17:49
|
添加 <literal>'django.contrib.flatpages'</literal> 到 <literal>INSTALLED_APPS</literal> 设置。<literal>django.contrib.flatpages</literal>依赖<literal>django.contrib.sites</literal>,所以确保它们都在<literal>INSTALLED_APPS</literal>里。
|
|
ySJ
|
2.0/chapter16/#261 |
2010-04-23 15:13:28
|
(有关站点的更多信息,请查阅”多站点“一节。)
|
|
ySJ
|
2.0/chapter16/#260 |
2010-04-23 15:13:02
|
当创建简单页面时,你指定它与哪个URL以及和哪个站点相关联 。
|
|
ySJ
|
2.0/chapter16/#257 |
2010-04-23 15:10:46
|
它在后台使用Django模型,这意味着它把页面项别的数据一样保存在数据库中,也就是说你可以使用标准Django数据库API来存取页面。
|
|
ySJ
|
2.0/chapter16/#256 |
2010-04-23 15:07:09
|
这个问题的解决方案是使用位于 <literal>django.contrib.flatpages</literal> 开发包中的 Django 简单页面(flatpages)应用程序。该应用让你能够通过 Django 管理站点来管理这些一次性的页面,还可以让你使用 Django 模板系统指定它们使用哪个模板。
|
|
ySJ
|
2.0/chapter16/#253 |
2010-04-23 15:03:24
|
尽管通常情况下总是搭建运行数据库驱动的 Web 应用,有时你还是需要添加一两张一次性的静态页面,例如“关于”页面,或者“隐私策略”页面等等。
|
|
ySJ
|
2.0/chapter16/#251 |
2010-04-23 15:02:04
|
Flatpages(简单页面)
|
|
ySJ
|
2.0/chapter16/#249 |
2010-04-23 15:00:43
|
在权限框架中(参见十四章),视图<literal>django.contrib.auth.views.login</literal>把当前<literal>Site</literal>名字和对象分别以<literal>{{ site_name }}</literal>和<literal>{{ site }}</literal>的形式传给了模板。
|
|
ySJ
|
2.0/chapter16/#247 |
2010-04-23 14:55:05
|
而且,如果你不指定一个合格的domain的话,提供目录URL的钩子将会使用当前“Site”对象的domain。
|
|
ySJ
|
2.0/chapter16/#246 |
2010-04-23 14:52:57
|
在 syndication 框架中(参阅第 13 章), <literal>title</literal> 和 <literal>description</literal> 的模板会自动访问变量 <literal>{{ site }}</literal> ,它其实是代表当前站点的 <literal>Site</literal> 对象。
|
|
ySJ
|
2.0/chapter16/#241 |
2010-04-23 14:50:26
|
每个注释被显示时,其 <literal>site</literal> 被设置为当前的 <literal>SITE_ID</literal> ,而当通过适当的模板标签列出注释时,只有当前站点的注释将会显示。
|
|
ySJ
|
2.0/chapter16/#228 |
2010-04-23 14:46:49
|
同样,Django 的特定部分(即 Django 超级管理站点和通用视图)使用在模型中定义 的<emphasis>第一个</emphasis>管理器,因此如果希望管理站点能够访问所有对象(而不是仅仅站点特有对象),请于定义 <literal>CurrentSiteManager</literal> 之前在模型中放入 <literal>objects = models.Manager()</literal> 。
|
|
ySJ
|
2.0/chapter16/#224 |
2010-04-23 14:40:59
|
注意
|
|
ySJ
|
2.0/chapter16/#219 |
2010-04-23 14:39:27
|
<literal>CurrentSiteManager</literal> 是如何知道 <literal>Photo</literal> 的哪个字段是 <literal>Site</literal> 呢?缺省情况下,它会查找一个叫做 <literal>site</literal> 的字段。如果你的模型包含了名字<literal>不是</literal><literal>site</literal>的<emphasis>外键</emphasis>或者<literal>多对多</literal>关联,你需要把它作为参数传给<literal>CurrentSiteManager</literal>以显示指明。下面的模型拥有一个<literal>publish_on</literal>字段:
|
|
ySJ
|
2.0/chapter16/#211 |
2010-04-23 14:33:37
|
例如:
|
|
ySJ
|
2.0/chapter16/#208 |
2010-04-23 14:33:18
|
这是一个模型管理器(见第十章),它会自动过滤使其只包含与当前站点相关联的对象。
|
|
ySJ
|
2.0/chapter16/#207 |
2010-04-23 14:32:27
|
如果 <literal>站点</literal> 在你的应用中扮演很重要的角色,请考虑在你的模型中使用方便的 <literal>CurrentSiteManager</literal> 。
|
|
ySJ
|
2.0/chapter16/#196 |
2010-04-23 14:29:00
|
完成这项工作的一种更加灵活(但更重量级)的方法是使用 Django 的模板系统。
|
|
ySJ
|
2.0/chapter16/#188 |
2010-04-23 14:28:07
|
正如情景二中所解释的那样,依据DRY原则(不做重复工作),你只需在一个位置储存站名和域名,然后引用当前 <literal>Site</literal> 对象的 <literal>name</literal> 和 <literal>domain</literal> 。例如:
|
|
ySJ
|
2.0/chapter16/#140 |
2010-04-23 13:58:02
|
该变量值应当是该设置文件所支撑的站点<literal>Site</literal> 对象的数据库 ID。
|
|
ySJ
|
2.0/chapter16/#136 |
2010-04-23 13:49:29
|
把<literal>example.com</literal>改成你自己的域名,然后通过Django admin站点或Python API来添加其他<literal>Site</literal>对象。
|
|
ySJ
|
2.0/chapter16/#106 |
2010-04-23 13:19:43
|
情景2:把网站的名字/域名保存在一个地方
|
|
ySJ
|
2.0/chapter16/#103 |
2010-04-23 13:19:00
|
Django 站点框架提供数据库表来记载哪些文章可以被关联。
|
|
ySJ
|
2.0/chapter16/#90 |
2010-04-23 13:12:30
|
情景1:多站点间复用数据
|
|
ySJ
|
2.0/chapter16/#81 |
2010-04-23 13:11:22
|
到编写此文时,它只包含一个模板标签<literal>{% lorem %}</literal>。详情参阅Django文档。
|
|
ySJ
|
2.0/chapter16/#81 |
2010-04-23 13:09:21
|
到编写此文是,它只包含一个模板标签<literal>{% lorem %}</literal>。详情参阅Django文档。
|
|
ySJ
|
2.0/chapter16/#80 |
2010-04-23 13:05:11
|
<literal>webdesign</literal>:对设计者非常有用的Django扩展。
|
|
ySJ
|
2.0/chapter16/#78 |
2010-04-23 13:00:51
|
参见13章。
|
|
ySJ
|
2.0/chapter16/#72 |
2010-04-23 12:59:34
|
参见13章。
|
|
ySJ
|
2.0/chapter16/#69 |
2010-04-23 12:59:11
|
参见14章。
|
|
ySJ
|
2.0/chapter16/#68 |
2010-04-23 12:58:56
|
<literal>sessions</literal> : Django 的会话框架。
|
|
ySJ
|
2.0/chapter16/#66 |
2010-04-23 12:58:40
|
参看后面的“重定向”小节。
|
|
ySJ
|
2.0/chapter16/#60 |
2010-04-23 12:57:13
|
以及爱尔兰的身份证号的方法。
|
|
ySJ
|
2.0/chapter16/#59 |
2010-04-23 12:56:48
|
例如,它包含了验证美国的邮编
|
|
ySJ
|
2.0/chapter16/#58 |
2010-04-23 12:55:37
|
<literal>localflavor</literal>:针对不同国家和文化的混杂代码段。
|
|
ySJ
|
2.0/chapter16/#53 |
2010-04-23 12:53:05
|
请参看<reference name="http://geodjango.org/" refuri="http://geodjango.org/">http://geodjango.org/</reference>上的文档。
|
|
ySJ
|
2.0/chapter16/#52 |
2010-04-23 12:52:26
|
这个库比较复杂,本书不详细介绍。
|
|
ySJ
|
2.0/chapter16/#51 |
2010-04-23 12:50:49
|
举个例子,它允许你的Django模型保存地理学数据并执行地理学查询。
|
|
ySJ
|
2.0/chapter16/#50 |
2010-04-23 12:48:57
|
<literal>gis</literal>:为Django提供GIS(Geographic Information Systems)支持的扩展。
|
|