The Django Book - 2 [学习]

MVC设计模式
让我们用一个例子快速进入正题,阐明先前的方法和Web框架之间的区别。你也许会使用Django写先前的CGI代码。怎么做呢?要做的第一件事情是我们将它划分为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>


再一次提醒,不要担心语法的特殊性;紧紧取得整体设计的感觉。主要的事情是关注的分类:
  • 文件models.py包含了数据库表的描述,由Python类表示。这个类是叫做model。使用简单的Python代码,你能创建、取得、更新以及删除数据库记录而不是写重复的SQL语句。
  • 文件views.py为页面提供业务逻辑。函数latest_books()是被调用
  • 文件urls.py指定了哪个view是被给定的URL调用。在这种情况下,URL /latest/ 将会被latest_books()函数处理。换句话说,如果你的域名是example.com,任何访问URL http://example.com/latest/ 将调用 latest_books() 函数
  • 文件latest_books.html是HTML模板,描述了页面的设计。它使用模板语言使用基本的逻辑语句——如:{% for book in book_list %}


我们采用的这种采取松散耦合模式叫做Model-View-Controller(MVC)。简单的说,MVC是开发软件的一种方法,因此定义和访问数据(the model)的代码是同请求——路由逻辑(the controller),依次的它又从用户接口(the view)分离开。(我们将会在第5章摄入讨论MVC)
这种方法的关键优势是组件是松散耦合的。强有力的Django Web应用的每个不同的部分都有关键的目标并且能是被独立变化的,不会影响其它的部分。例如开发者能为应用的给定部分改变URL而不会影响下层的实现。设计者能改变页面的HTML而不需要调整渲染它的Python代码。数据库管理员能重命名数据库表以及指定单个位置的变化,而不需要在很多文件中搜索和替换。
在这本书中,MVC的每个组件都有自己的章节。第三章讲述view,四章讲述template,第五章讲述models。

Diango的历史
在我们研究更多代码之前,我们应该花一些时间解释Django的历史。我们展示给你不使用捷径怎样做这些事情,以至于你能更充分地理解捷径。相似的,理解Django为什么会被创建,因为历史知识将会放入Django上下文。
如果你已经构建Web应用一会了,你大概在先前描述的CGI例子熟悉了这些问题。经典的Web开发者会做以下一些事情:
1、从零开始写Web应用
2、从零开始写另外的Web应用
3、认识到应用从第一步共享很多通用应用
4、重构代码以至于应用1共享应用2的代码
5、重复2-4步
6、认识你已经发明的框架
这个过程精确地描述了Django是怎样创建的!
在Lawrence/Kansas/USA的Web开发组编写的,源于真实应用。诞生于2003年秋天的。……

How to Read This Book
……
要求编程知识这本书的读者应该理解过程和面向对象编程的基础:控制结构(如if,while,for),数据结构,变量,类和对象。
正如你期盼的,Web开发的经历是非常有帮助的,但是理解这本书是不要求的。通过这本书,我们尝试为缺乏这种经历的读者在Web开发中提升最佳实践。

要求的Python知识
核心的,在Python编程语言中Django是简单的库集合。使用Django开发站点,你使用这些库写代码。了解Django,然后,了解怎样在Python中编写程序,理解Django库怎样工作是重要的事情。
如果你在Python中有编程经历,你应该没有深入研究的麻烦。总体上说,Django代码不会实现许多的“magic”(例如,实现的程序花样是难于解释或者理解的)。对于你,学习Django就是了解Django的习惯和API。
如果你没有在Python方面的编程经历,你会感到一种享受。它是易于学习的,并且具有使用的乐趣!尽管这本书没有包含完全的Python指导,但是它强调了Python特征和功能。我们仍然推荐你阅读官方文档 http://docs.python.org/tut/。我们也推荐Mark Pilgrim的免费书籍《Dive Into Python》,http://www.diveintopython.org/ 并且被Apress出版。

要求的Python版本
这本书契合版本Django 1.1
Django开发者在主要的版本序列中维护向后兼容。这个承诺意味着,如果你为Django1.1写了一个应用,它将会在1.2,1.3,1.9和其它以“1”开始的另外版本中工作。
一旦Django到2.0,你的应用也许需要被重写——但是2.0版本是一条很长的路。它花了三年多的时间发布1.0版本。

寻求帮助
Django的最大的好处是它的用户社区。对于任意方面的Django帮助——从安装,应用设计,数据库设计,部署——在线自由地问问题。
  • djagngo-user邮件列表有许多用户提问和回答问题。自由参加 http://www.djangoproject.com/r/django-users
  • Django IRC通道是Django用户实时聊天和帮助的渠道。


下章导读
下一章,我们将会开始Django,讲述了它的安装和初始化。

未完待续……

你可能感兴趣的:(编程,mvc,Web,django,python)