• 第一章 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/

  • 相关阅读:
    从零开始写代码AdaBoost算法的python实现
    从零开始写代码 ID3决策树Python
    redis有启动,但是其他主机telnet 不通的问题
    关于js查找和筛选和循环的几种方式(find();findIndex();filter();some();every();forEach;map();for/in)
    linux 设置tomcat 重启清空 catalina.out 断舍离
    旋转数组 断舍离
    nginx 普通用户启动配置 && springbootswagger 报错 Unable to infer base url 断舍离
    CentOS yum 直接安装最新的nginx【转】 断舍离
    买卖股票的最佳时机 II 断舍离
    swagger 的 pathmapping 配置的理解 断舍离
  • 原文地址:https://www.cnblogs.com/mzxiaoze/p/9104007.html
Copyright © 2020-2023  润新知