您的位置:首页 > 编程语言 > Go语言

【django 学习笔记】15-集成的子框架

2010-06-01 13:55 417 查看

Django
标准库

Django
的标准库存放在 django.contrib
包中。

django.contrib

以下开发包组成:

admin :
自动化的站
点管理工具。 请查看第6
章。

admindocs:
为Django admin
站点提供自动文档。
本书没有介绍这方面的知识;
详情请参
阅Django
官方文档。

auth : Django

用户验证框架。 参见第十四章。

comments :
一个
评论应用,
目前,
这个应用正在紧张的开发中,
因此在本书出版的时候还不能给出一个完整的说明,
关于这个应用的更多信息请参见Django
的官方网站.
本书没有介绍这方面的知识;
详情请参阅Django
官方文档。

contenttypes :

是一个用于引入文档类型的框架,
每个安
装的Django
模块作为一种独立的文
档类型。这个框架主要在Django

部被其他应用使用,
它主要面向Django
的高级开发者。
可以通过阅读源码来了解关于这个框架的更多信息,

码的位置在 django/contrib/contenttypes/


csrf :
这个模块用来
防御跨站请求伪造(CSRF)
。参
见后面标题为”CSRF
防御”的小
节。

databrowse:
帮助你
浏览数据的Django
应用。
本书没有介绍这方面的知识;
详情请参阅Django
官方文档。

flatpages :

个在数据库中管理单一HTML
内容的模
块。 参见后面标题为“Flatpages”

小节。

formtools:
一些列处
理表单通用模式的高级库。 本书没有介绍这方面的知识;

情请参阅Django
官方文档。

gis:
为Django
提供GIS(Geographic Information
Systems)
支持的扩展。 举个例子,
它允许你的Django
模型保存地理学数据并执行地理学查询。 这个库比较复杂,
本书不详细介绍。 请参看http://geodjango.org/
上的文
档。

humanize :
一系
列 Django
模块过滤器,
用于增加数据的人性化。参阅稍后的章节《人性化
数据》。

localflavor:
针对
不同国家和文化的混杂代码段。 例如,

包含了验证美国的邮编 以及爱尔兰的身份证号的方法。

markup :
一系列的
Django
模板过滤器,
用于实现一些常用标记语言。
参阅后续章节《标记过滤器》。

redirects :

来管理重定向的框架。 参看后面的“重定向”小节。

sessions : Django

会话框架。 参见14
章。

sitemaps :
用来
生成网站地图的 XML
文件的框架。
参见13
章。

sites :
一个让你可
以在同一个数据库与 Django

装中管理多个网站的框架。 参见下一节:

syndication :

个用 RSS
和 Atom
来生成聚合订阅源的的框架。 参见13
章。

webdesign :
对设
计者非常有用的Django
扩展。
到编写此文时,
它只包含一个模板标签{% lorem %}
。详情参阅Django
文档。

多个站点

情景1:
多站点间复用
数据

情景2:
把网站的名字/
域名保存在一个地方

如何使用多站点框架

多站点框架与其说是一个框架,

如说是一系列约定。 所有的一切都基于两个简单的概念:

位于 django.contrib.sites

的 Site
模型有
domain
和 name
两个字段。

SITE_ID
设置指定了与
特定配置文件相关联的 Site
对象
之数据库 ID


安装多站点应用要执行以下几个步骤:

将 ‘django.contrib.sites’

加入到 INSTALLED_APPS

中。

运行 manage.py syncdb

令将 django_site
表安装
到数据库中。 这样也会建立默认的站点对象,

名为 example.com


把example.com
改成
你自己的域名,
然后通过Django admin
站点或Python API
来添加其他Site
对象。 为该 Django
项目支撑的每个站(
或域)
创建一个 Site
对象。

在每个设置文件中定义一个 SITE_ID

变量。 该变量值应当是该设置文件所支撑的站点Site
对象的数据库ID


多站点框架的功能

多个站点的数据 重用

将 内容与单一 站点相关 联

从视图 钩挂当前 站点

获取当前域用于呈现

当前站点管理器

如果 站点 在你的应用中扮演很重要的角色,

考虑在你的模型中使用方便的 CurrentSiteManager

。 这是一个模型管理器(

第十章),
它会自动过滤使其只包含与当
前站点相关联的对象。

Django
如何使用
多站点框架

Flatpages(

单页面)

尽管通常情况下总是搭建运行数据库驱动的 Web

应用,
有时你还是需要
添加一两张一次性的静态页面,
例如“关
于”页面,
或者“隐私策略”页面等等。

这个问题的解决方案是使用位于 django.contrib.flatpages

开发包中的 Django

单页面(flatpages)
应用程
序。该应用让你能够通过 Django

理站点来管理这些一次性的页面,
还可以
让你使用 Django
模板系统指定
它们使用哪个模板。

使用简单页面

安装简单页面应用程序必须按照下面的步骤:

添加 ‘django.contrib.flatpages’

到 INSTALLED_APPS

置。django.contrib.flatpages

赖django.contrib.sites,

以确保它们都在INSTALLED_APPS
里。

将 ‘django.contrib.flatpages.middleware.FlatpageFallbackMiddleware’

添加到 MIDDLEWARE_CLASSES

设置中。

运行 manage.py syncdb

令在数据库中创建必需的两个表。

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

通过超级管理界面

如果已经激活了自动的 Django

级管理界面,
你将会在超级管理页面的首
页看到有个 Flatpages

域。 你

可以像编辑系统中其它对象那样编辑简单页面。

通过
Python API

使用简单页面模板

你必须自己创建 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|safe }}

</body>

</html>

重定向

使用重定向框架

安装重定向应用程序必须遵循以下步骤:

将 ‘django.contrib.redirects’

添加到 INSTALLED_APPS

设置中。

将 ‘django.contrib.redirects.middleware.RedirectFallbackMiddleware’

添加到 MIDDLEWARE_CLASSES

设置中。

运行 manage.py syncdb

令将所需的表添加到数据库中。manage.py
syncdb
在数据库中创建了一个 django_redirect

表。 这是一个简单的查询表,

有site_id
、old_path
和new_path
三个字段。

你可以通过 Django
超级
管理界面或者 Django
数据库 API
来创建重定向。

增加、变更和删除重定向

你可以两种方式增加、变更和删除重定向:

通过管理界面

同过Python API

CSRF
防护

django.contrib.csrf

发包能够防止遭受跨站请求伪造攻击 (CSRF).

使 用CSRF
中间件

django.contrib.csrf

发包只有一个模块: middleware.py

该模块包含了一个 Django
中间
件类——CsrfMiddleware ,

类实现了 CSRF
防护功能。

人性化数据

包django.contrib.humanize

含了一些是数据更人性化的模板过滤器。 要激活这些过滤器,
请把‘django.contrib.humanize’

入到你的INSTALLED_APPS
中。
完成之后,
向模版了加入{% load humanize %}
就可以使用
下面的过滤器了。

apnumber

对于 1
到 9
的数字,
该过滤器返回了数字的拼写形式。 否则,
它将返回数字。

ntcomma

该过滤器将整数转换为每三个数字用一个逗号分隔的字符串

intword

该过滤器将一个很大的整数转换成友好的文本表示方式。 它对于超过一百万的数字最好用

ordinal

该过滤器将整数转换为序数词的字符串形式。

标记过滤器

包django.contrib.markup

含了一些列Django
模板过滤器,
每一个都实现了一中通用的标记语言。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息