没有合适的资源?快使用搜索试试~ 我知道了~
首页The_Django_Book_2.0_中文版.pdf
The_Django_Book_2.0_中文版.pdf
需积分: 10 95 浏览量
更新于2023-05-29
评论
收藏 3.53MB PDF 举报
The_Django_Book_2.0_中文版.pdf,简单易学,可以做手册
资源详情
资源评论
资源推荐

1 / 310
第一章: 介绍 DJANGO ....................................................................................................................................................... 2
第二章: 入门 ..................................................................................................................................................................... 8
第三章: 视图和 URL 配置 ................................................................................................................................................ 17
第四章: 模板 ................................................................................................................................................................... 33
第五章: 模型 ................................................................................................................................................................... 62
第六章: DJANGO 站点管理 ............................................................................................................................................. 84
第七章: 表单 ..................................................................................................................................................................102
第八章: 高级视图和 URL 配置 ...................................................................................................................................... 123
第九章: 模板高级进阶 .................................................................................................................................................. 143
第十章: 数据模型高级进阶 .......................................................................................................................................... 165
第十一章: 通用视图 .......................................................................................................................................................175
第十二章: 部署 DJANGO ............................................................................................................................................... 183
第十三章: 输出非 HTML 内容 ........................................................................................................................................204
第十四章: 会话、用户和注册 ....................................................................................................................................... 221
第十五章: 缓存机制 ...................................................................................................................................................... 244
第十六章: 集成的子框架 DJANGO.CONTRIB ................................................................................................................. 257
第十七章: 中间件 ........................................................................................................................................................... 273
第十八章: 集成已有的数据库和应用 ........................................................................................................................... 280
第十九章: 国际化 .......................................................................................................................................................... 286
第二十章: 安全 ..............................................................................................................................................................302

2 / 310
第一章: 介绍 Django
本书所讲的是 Django:一个可以使 Web 开发工作愉快并且高效的 Web 开发框架。 使用 Django,使你
能够以最小的代价构建和维护高质量的 Web 应用。
从好的方面来看,Web 开发激动人心且富于创造性;从另一面来看,它却是份繁琐而令人生厌的工作。 通
过减少重复的代码,Django 使你能够专注于 Web 应用上有 趣的关键性的东西。为了达到这个目标,Django
提供了通用 Web 开发模式的高度抽象,提供了频繁进行的编程作业的快速解决方法,以及为“如何解决问题”
提供了清晰明了的约定。 同时,Django 尝试留下一些方法,来让你根据需要在 framework 之外来开发。
本书的目的是将你培养成 Django 专家。 主要侧重于两方面:第一,我们深度解释 Django 到底做了哪些
工作以及如何用她构建 Web 应用;第二,我们将会在适当的地方讨论更高级的概念,并解释如何 在自己的项
目中高效的使用这些工具。 通过阅读此书,你将学会快速开发功能强大网站的技巧,并且你的代码将会十分 清
晰,易于维护。 本书的代码清晰,易维护,通过学习,可以快速开发功能强大的网站。
框架是什麼?
Django 在新一代的
Web 框架
中非常出色,为什么这么说呢?
为回答该问题,让我们考虑一下
不使用
框架设计 Python 网页应用程序的情形。 贯穿整本书,我们多次展
示不使用框架实现网站基本功能的方法,让读者认识到框架开发的方便。 (不使用框架,更多情况是没有合适
的框架可用。 最重要的是,理解实现的来龙去脉会使你成为一个优秀的 web 开发者。)
使用 Python 开发 Web,最简单,原始和直接的办法是使用 CGI 标准,在 1998 年这种方式很流行。 现在
从应用角度解释它是如何工作: 首先做一个 Python 脚本,输出 HTML 代码,然后保存成.cgi 扩展名的文件,
通过浏览器访问此文件。 就是这样。
如下示例,用 Python CGI 脚本显示数据库中最新出版的 10 本书: 不用关心语法细节;仅仅感觉一下基本
实现的方法:
#!/usr/bin/env python
import MySQLdb
print "Content-Type: text/html\n"
print "<html><head><title>Books</title></head>"
print "<body>"
print "<h1>Books</h1>"
print "<ul>"

3 / 310
connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db')
cursor = connection.cursor()
cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10")
for row in cursor.fetchall():
print "<li>%s</li>" % row[0]
print "</ul>"
print "</body></html>"
connection.close()
首先,用户请求 CGI,脚本代码打印 Content-Type 行,后面跟着换行。 再接下 来是一些 HTML 的起始
标签,然后连接数据库并执行一些查询操作,获取最新的十本书。在遍历这些书的同时,生成一个书名的 HTML
列表项。 最后,输出 HTML 的结束标签并且关闭数据库连接。
像这样的一次性的动态页面,从头写起的方法并非一定不好。 其中一点: 这些代码简单易懂,就算是一个
初起步的 开发者都能读明白这 16 行的 Python 的代码,而且这些代码从头到尾做了什么都能了解得一清二楚。
不需要学习额外 的背景知识,没有额外的代码需要去了解。 同样,也易于部署这 16 行代码,只需要将它保存
为一个 latestbooks.cgi 的 文件,上传到网络服务器上,通过浏览器访问即可。
尽管实现很简单,还是暴露了一些问题和不便的地方。 问你自己这几个问题:
应用中有多处需要连接数据库会怎样呢? 每个独立的 CGI 脚本,不应该重复写数据库连接的代码。 比
较实用的办法是写一个共享函数,可被多个代码调用。
一个开发人员
确实
需要去关注如何输出 Content-Type 以及完成所有操作后去关闭数据 库么? 此
类问题只会降低开发人员的工作效率,增加犯错误的几率。 那些初始化和释放 相关的工作应该交给一些通用的
框架来完成。
如果这样的代码被重用到一个复合的环境中会发生什么? 每个页面都分别对应独立的数据库和密码
吗?
如果一个 Web 设计师,完全没有 Python 开发经验,但是又需要重新设计页面的话,又将 发生什么
呢? 一个字符写错了,可能导致整个应用崩溃。 理想的情况是,页面显示的逻辑与从数据库中读取书本记录分
隔开,这样 Web 设计师的重新设计不会影响到之前的业务逻辑。
1

4 / 310
以上正是 Web 框架致力于解决的问题。 Web 框架为应用程序提供了一套程序框架, 这样你可以专注于
编写清晰、易维护的代码,而无需从头做起。 简单来说,这就是 Django 所能做的。
MVC 设计模式
让我们来研究一个简单的例子,通过该实例,你可以分辨出,通过 Web 框架来实现的功能与之前的方式有
何不同。 下面就是通过使用 Django 来完成以上功能的例子: 首先,我们分成 4 个 Python 的文件,(models.py ,
views.py , urls.py ) 和 html 模板文件 (latest_books.html )
# models.py (the database tables)
from django.db import models
class Book(models.Model):
name = models.CharField(max_length=50)
pub_date = models.DateField()
# views.py (the business logic)
from django.shortcuts import render_to_response
from models import Book
def latest_books(request):
book_list = Book.objects.order_by('-pub_date')[:10]
return render_to_response('latest_books.html', {'book_list': book_list})
# urls.py (the URL configuration)
from django.conf.urls.defaults import *
import views
urlpatterns = patterns('',
(r'^latest/$', views.latest_books),
)
# latest_books.html (the template)
<html><head><title>Books</title></head>
<body>
<h1>Books</h1>
<ul>
{% for book in book_list %}
<li>{{ book.name }}</li>
{% endfor %}
</ul>
</body></html>

5 / 310
然后,不用关心语法细节;只要用心感觉整体的设计。 这里只关注分割后的几个文件:
models.py 文件主要用一个 Python 类来描述数据表。 称为
模型(model)
。 运用这个类,你可以通
过简单的 Python 的代码来创建、检索、更新、删除 数据库中的记录而无需写一条又一条的 SQL 语句。
views.py 文件包含了页面的业务逻辑。 latest_books()函数叫做
视图
。
urls.py 指出了什么样的 URL 调用什么的视图。 在这个例子中 /latest/ URL 将会调用
latest_books() 这个函数。 换句话说,如果你的域名是 example.com,任何人浏览网址
http://example.com/latest/将会调用 latest_books()这个函数。
latest_books.html 是 html 模板,它描述了这个页面的设计是如何的。 使用带基本逻辑声明的模板
语言,如{% for book in book_list %}
结合起来,这些部分松散遵循的模式称为模型-视图-控制器(MVC)。 简单的说, MVC 是一种软件开发的
方法,它把代码的定义和数据访问的方法(模型)与请求逻辑 (控制器)还有用户接口(视图)分开来。 我们
将在第 5 章更深入地讨论 MVC。
这种设计模式关键的优势在于各种组件都是
松散结合
的。这样,每个由 Django 驱动 的 Web 应用都有
着明确的目的,并且可独立更改而不影响到其它的部分。比如,开发者 更改一个应用程序中的 URL 而不用影
响到这个程序底层的实现。 设计师可以改变 HTML 页面 的样式而不用接触 Python 代码。 数据库管理员可
以重新命名数据表并且只需更改一个地方,无需从一大堆文件中进行查找和替换。
本书中,每个组件都有它自己的一个章节。 比如,第三章涵盖了视图,第四章是模板, 而第五章是模型。
Django 历史
在我们讨论代码之前我们需要先了解一下 Django 的历史。 从上面我们注意到:我们将向你展示如何不使
用捷径来完成工作,以便能更好的理解捷径的原理 同样,理解 Django 产生的背景,历史有助于理解 Django
的实现方式。
如果你曾编写过网络应用程序。 那么你很有可能熟悉之前我们的 CGI 例子。
1. 从头开始编写网络应用程序。
2. 从头编写另一个网络应用程序。
3. 从第一步中总结(找出其中通用的代码),并运用在第二步中。
4. 重构代码使得能在第 2 个程序中使用第 1 个程序中的通用代码。
5. 重复 2-4 步骤若干次。
剩余309页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0