【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
模板过滤器,
每一个都实现了一中通用的标记语言。
相关文章推荐
- 【django 学习笔记】17-集成已有的数据库和应用
- 【day 15】python编程:从入门到实践学习笔记-基于Django框架的Web开发-用户账户(二)
- Django框架学习笔记(15.增加一对多数据简易示例)
- android 学习笔记15-项目实战 切换显示动画 底部线条移动
- Django 学习笔记(3)
- SMP3.0学习笔记之十六 与非SAP后端系统集成之数据库篇
- Python Django 学习笔记 软件下载及安装(一)
- Linux学习笔记15——GDB 命令详细解释【转】
- IOS学习笔记15——SQLite数据库
- django基础学习笔记
- Django学习笔记2-编写第一个Django程序
- C#学习笔记15
- Django学习笔记(二)
- django学习笔记-中文显示
- PHP学习笔记【15】--全局变量,静态变量,静态方法,php方法重载
- Django学习笔记2 模板继承、添加页面
- [黑马程序员]15[Foundation框架] Foundation部分学习笔记小结
- 廖雪峰python学习笔记15.正则表达式入门
- Django学习笔记5 让用户拥有私有数据 访问限制
- java学习笔记-设计模式15(模板方法模式)