第一章 Django之MVC模式

  让我们来研究一个简单的例子,通过该实例,你可以分辨出,通过 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 思想。

猜你喜欢

转载自www.cnblogs.com/mzxiaoze/p/9104007.html
今日推荐