安裝平頁面應用程序必須按照下面的步驟:
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_flatpage和django_flatpage_sites。django_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
周銳 閱讀(645)
評論(0) 編輯 收藏 所屬分類:
Python