posts - 431,  comments - 344,  trackbacks - 0
安装平页面应用程序必须按照下面的步骤:

1.      添加'django.contrib.flatpages'INSTALLED_APPS设置。django.contrib.flatpages依赖于django.contrib.sites , 所以确保这两个开发包都包括在``INSTALLED_APPS`` 设置中。

2.      'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'添加到MIDDLEWARE_CLASSES设置中。

3.      运行manage.pysyncdb命令在数据库中创建必需的两个表。

简单页面应用程序在数据库中创建两个表:django_flatpagedjango_flatpage_sitesdjango_flatpage只是将 URL 映射到到标题和一段文本内容。django_flatpage_sites是一个多对多表,用于关联某个简单页面以及一个或多个站点。

该应用所带来的FlatPage模型在django/contrib/flatpages/models.py进行定义,如下所示:

from django.db import models

from django.contrib.sites.models import Site

class FlatPage(models.Model):

    url = models.CharField(maxlength=100)

    title = models.CharField(maxlength=200)

    content = models.TextField()

    enable_comments = models.BooleanField()

    template_name = models.CharField(maxlength=70, blank=True)

    registration_required = models.BooleanField()

    sites = models.ManyToManyField(Site)

让我们逐项看看这些字段的含义:

§                url : 该简单页面所处的 URL,不包括域名,但是包含前导斜杠 (例如/about/contact/ )

§                title : 简单页面的标题。框架不对它作任何特殊处理。由你通过模板来显示它。

§                content : 简单页面的内容 ( HTML 页面)。框架不会对它作任何特别处理。由你负责使用模板来显示。

§                enable_comments : 是否允许该简单页面使用注释。框架不对此做任何特别处理。你可在模板中检查该值并根据需要显示注释窗体。

§                template_name : 用来解析该简单页面的模板名称。这是一个可选项;如果未指定模板或该模板不存在,系统会退而使用默认模板flatpages/default.html

§               registration_required : 是否注册用户才能查看此简单页面。该设置项集成了 Djangos 验证/用户框架,该框架将于第十二章详述。

§              sites : 该简单页面放置的站点。该项设置集成了 Django 多站点框架,该框架在本章的《多站点》一节中有所阐述。

你可以通过 Django 超级管理界面或者 Django 数据库 API 来创建平页面。要了解更多内容,请查阅《添加、修改和删除简单页面》一节。

一旦简单页面创建完成,FlatpageFallbackMiddleware将完成(剩下)所有的工作。每当 Django 引发 404 错误,作为终极手段,该中间件将根据所请求的 URL 检查平页面数据库。确切地说,它将使用所指定的 URL以及SITE_ID设置对应的站点 ID 查找一个简单页面。

如果找到一个匹配项,它将载入该简单页面的模板(如果没有指定的话,将使用默认模板flatpages/default.html)。同时,它把一个简单的上下文变量—— flatpage(一个简单页面对象)传递给模板。在模板解析过程中,它实际用的是RequestContext

如果FlatpageFallbackMiddleware没有找到匹配项,该请求继续如常处理。

注意

该中间件仅在发生 404 (页面未找到)错误时被激活,而不会在 500 (服务器错误)或其他错误响应时被激活。还要注意的是必须考虑MIDDLEWARE_CLASSES的顺序问题。通常,你可以把FlatpageFallbackMiddleware放在列表最后,因为它是一种终极手段。

添加、修改和删除简单页面

可以用两种方式增加、变更或删除简单页面:

通过超级管理界面

如果已经激活了自动的 Django 超级管理界面,你将会在超级管理页面的首页看到有个 Flatpages 区域。你可以像编辑系统中其它对象那样编辑简单页面。

通过 Python API

前面已经提到,简单页面表现为django/contrib/flatpages/models.py中的标准 Django 模型。因此,你可以通过 Django 数据库 API 来存取简单页面对象,例如:

>>> from django.contrib.flatpages.models import FlatPage

>>> from django.contrib.sites.models import Site

>>> fp = FlatPage(

...     url='/about/',

...     title='About',

...     content='<p>About this site...</p>',

...     enable_comments=False,

...     template_name='',

...     registration_required=False,

... )

>>> fp.save()

>>> fp.sites.add(Site.objects.get(id=1))

>>> FlatPage.objects.get(url='/about/')

<FlatPage: /about/ -- About>

使用简单页面模板

缺省情况下,系统使用模板flatpages/default.html来解析简单页面,但你也可以通过设定FlatPage对象的template_name字段来覆盖特定简单页面的模板。

你必须自己创建flatpages/default.html模板。只需要在模板目录创建一个flatpages目录,并把default.html文件置于其中。

简单页面模板只接受有一个上下文变量—— flatpage,也就是该简单页面对象。

以下是一个flatpages/default.html模板范例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

<html>

<head>

  <title>{{ flatpage.title }}</title>

</head>

<body>

  {{ flatpage.content }}

</body>

</html>

posted on 2008-12-05 15:33 周锐 阅读(640) 评论(0)  编辑  收藏 所属分类: Python

只有注册用户登录后才能发表评论。


网站导航: