posts - 431,  comments - 344,  trackbacks - 0
          安裝平頁面應用程序必須按照下面的步驟:

          1.      添加'django.contrib.flatpages'INSTALLED_APPS設置。django.contrib.flatpages依賴于django.contrib.sites , 所以確保這兩個開發(fā)包都包括在``INSTALLED_APPS`` 設置中。

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

          3.      運行manage.pysyncdb命令在數(shù)據(jù)庫中創(chuàng)建必需的兩個表。

          簡單頁面應用程序在數(shù)據(jù)庫中創(chuàng)建兩個表:django_flatpagedjango_flatpage_sitesdjango_flatpage只是將 URL 映射到到標題和一段文本內(nèi)容。django_flatpage_sites是一個多對多表,用于關聯(lián)某個簡單頁面以及一個或多個站點。

          該應用所帶來的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 : 簡單頁面的內(nèi)容 ( HTML 頁面)。框架不會對它作任何特別處理。由你負責使用模板來顯示。

          §                enable_comments : 是否允許該簡單頁面使用注釋。框架不對此做任何特別處理。你可在模板中檢查該值并根據(jù)需要顯示注釋窗體。

          §                template_name : 用來解析該簡單頁面的模板名稱。這是一個可選項;如果未指定模板或該模板不存在,系統(tǒng)會退而使用默認模板flatpages/default.html

          §               registration_required : 是否注冊用戶才能查看此簡單頁面。該設置項集成了 Djangos 驗證/用戶框架,該框架將于第十二章詳述。

          §              sites : 該簡單頁面放置的站點。該項設置集成了 Django 多站點框架,該框架在本章的《多站點》一節(jié)中有所闡述。

          你可以通過 Django 超級管理界面或者 Django 數(shù)據(jù)庫 API 來創(chuàng)建平頁面。要了解更多內(nèi)容,請查閱《添加、修改和刪除簡單頁面》一節(jié)。

          一旦簡單頁面創(chuàng)建完成,FlatpageFallbackMiddleware將完成(剩下)所有的工作。每當 Django 引發(fā) 404 錯誤,作為終極手段,該中間件將根據(jù)所請求的 URL 檢查平頁面數(shù)據(jù)庫。確切地說,它將使用所指定的 URL以及SITE_ID設置對應的站點 ID 查找一個簡單頁面。

          如果找到一個匹配項,它將載入該簡單頁面的模板(如果沒有指定的話,將使用默認模板flatpages/default.html)。同時,它把一個簡單的上下文變量—— flatpage(一個簡單頁面對象)傳遞給模板。在模板解析過程中,它實際用的是RequestContext

          如果FlatpageFallbackMiddleware沒有找到匹配項,該請求繼續(xù)如常處理。

          注意

          該中間件僅在發(fā)生 404 (頁面未找到)錯誤時被激活,而不會在 500 (服務器錯誤)或其他錯誤響應時被激活。還要注意的是必須考慮MIDDLEWARE_CLASSES的順序問題。通常,你可以把FlatpageFallbackMiddleware放在列表最后,因為它是一種終極手段。

          添加、修改和刪除簡單頁面

          可以用兩種方式增加、變更或刪除簡單頁面:

          通過超級管理界面

          如果已經(jīng)激活了自動的 Django 超級管理界面,你將會在超級管理頁面的首頁看到有個 Flatpages 區(qū)域。你可以像編輯系統(tǒng)中其它對象那樣編輯簡單頁面。

          通過 Python API

          前面已經(jīng)提到,簡單頁面表現(xiàn)為django/contrib/flatpages/models.py中的標準 Django 模型。因此,你可以通過 Django 數(shù)據(jù)庫 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>

          使用簡單頁面模板

          缺省情況下,系統(tǒng)使用模板flatpages/default.html來解析簡單頁面,但你也可以通過設定FlatPage對象的template_name字段來覆蓋特定簡單頁面的模板。

          你必須自己創(chuàng)建flatpages/default.html模板。只需要在模板目錄創(chuàng)建一個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
          主站蜘蛛池模板: 易门县| 南安市| 无为县| 温泉县| 浮山县| 赣州市| 湘乡市| 武乡县| 泰州市| 定日县| 林甸县| 巴东县| 手机| 定南县| 乐安县| 平利县| 稷山县| 启东市| 金湖县| 婺源县| 合肥市| 枞阳县| 稷山县| 洛南县| 九寨沟县| 收藏| 聂拉木县| 万源市| 安塞县| 许昌县| 海门市| 平罗县| 长丰县| 浪卡子县| 宿州市| 北碚区| 新乐市| 三明市| 乐山市| 沙田区| 万荣县|