第一章 Django之MVC模式(2)

  让我们来研究一个简单的例子,通过该实例,你可以分辨出,通过 Web 框架来实现的功能与之前的方式有何不同。下面就是通过使用 Django 来完成以上功能的例子:

 1 # models.py (the database tables)     #  模型
 2  
 3 from django.db import models 
 4  
 5 class Book(models.Model):
 6 name = models.CharField(maxlength=50)
 7 pub_date = models.DateField() 
 8  
 9  
10 # views.py (the business logic)     #  视图
11  
12 from django.shortcuts import render_to_response from models import Book 
13  
14 def latest_books(request):
15 book_list = Book.objects.order_by('-pub_date')[:10]
16 return render_to_response('latest_books.html', {'book_list': book_list}) 
17  
18  
19 # urls.py (the URL configuration)     #  控制器
20  
21 from django.conf.urls.defaults import * import views 
22  
23 urlpatterns = patterns(
24     '',
25     (r'latest/$', views.latest_books),
26 ) 
27  
28  
29 # latest_books.html (the template) 
30  
31 <html><head><title>Books</title></head>
32 <body>
33 <h1>Books</h1> 
34 <ul>
35 {% for book in book_list %} 
36 <li>{{ book.name }}</li>
37 {% endfor %} 
38 </ul> 
39 </body></html> 

先不要担心这个东西是如何工作的,我们主要是先想让你知道总体的设计,这里关键要注意的是分离问题

  • models.py 文件主要用一个 Python 类来描述数据表。称为模型 (model)。运用这个类,你可以通过简单的 Python 的代码来创建、检索、更新、删除 数据库中的记录而无需写一条又一条的 SQL 语句。
  • view.py 文件的 latest_books() 函数中包含了该页的业务层逻辑。这个函数叫做视图(view) 。
  • urls.py 指出了什么样的 URL 调用什么的视图,在这个例子中 /latest/ URL将会调用 latest_books() 这个函数。
  • latest_books.html 是 html 模板,它描述了这个页面的设计是如何的。

  这些部分松散的组合在一起就是模型-视图-控制器(MVC)的设计模式。简单的说,MVC 是一种软件开发的方法,它把代码的定义和数据访问的方法(模型)与请求逻辑(控制器)还有用户接口(视图)分开来。
这种设计模式关键的优势在于各种组件都是松散结合的。这样,每个由 Django 驱动 的 Web 应用都有着明确的目的,并且可独立更改而不影响到其它的部分。比如,开发者更改一个应用程序中的 URL 而不用影响到这个程序底层的实现。设计师可以改变 HTML 页面的样式而不用接触 Python 代码。数据库管理员可以重新命名数据表并且只需更改一个地方,无需从一大堆文件中进行查找和替换。
  本书中,每个组件都有它自己的一个章节。比如,第三章涵盖了视图,第四章是模板,而第五章是模型。同时第五章也深入讨论了 Django 的 MVC 思想。

原文:《The Django Book》 http://djangobook.py3k.cn/

原文地址:https://www.cnblogs.com/mzxiaoze/p/9104007.html