• Django框架里的MVC思想

    MVC 设计模式
    服务器君一共花费 11.649 ms 进行了 4 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    让我们来研究一个简单的例子,通过该实例,你可以分辨出,通过Web框架来实现的功能与之前的方式有何不同。 下面就是通过使用Django来完成以上功能的例子: 首先,我们分成4个Python的文件,(models.py , views.py , urls.py ) 和html模板文件 (latest_books.html )。

    models.py:

    # 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:

    # 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:

    # urls.py (the URL configuration)
    
    from django.conf.urls.defaults import *
    import views
    
    urlpatterns = patterns('',
        (r'^latest/$', views.latest_books),
    )
    

    latest_books.html:

    # 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 指出了什么样的 URL 调用什么的视图。 在这个例子中 /latest/ URL 将会调用 latest_books() 这个函数。 换句话说,如果你的域名是example.com,任何人浏览网址http://example.com/latest/将会调用latest_books()这个函数。
    • latest_books.html 是 html 模板,它描述了这个页面的设计是如何的。 使用带基本逻辑声明的模板语言,如{% for book in book_list %}
    • 结合起来,这些部分松散遵循的模式称为模型-视图-控制器(MVC)。 简单的说, MVC 是一种软件开发的方法,它把代码的定义和数据访问的方法(模型)与请求逻辑 (控制器)还有用户接口(视图)分开来。

    这种设计模式关键的优势在于各种组件都是 松散结合 的。这样,每个由 Django 驱动 的Web应用都有着明确的目的,并且可独立更改而不影响到其它的部分。 比如,开发者 更改一个应用程序中的 URL 而不用影响到这个程序底层的实现。 设计师可以改变 HTML 页面 的样式而不用接触 Python 代码。 数据库管理员可以重新命名数据表并且只需更改一个地方,无需从一大堆文件中进行查找和替换。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [Python程序设计] Python Web部署的背景知识 9 个条目
  2. [软件工程与项目管理] 浏览器初步介绍 8 个条目
  3. [移动开发] Android与SQLite数据库 7 个条目
  4. [移动开发] Layout_weight属性解析 5 个条目
  5. [Python程序设计] Django架构流程分析 7 个条目
  6. [Linux操作系统] 基本 Linux Shell 命令 2 个条目
  7. [Python程序设计] Tornado源码解析 23 个条目
  8. [移动开发] Android 网络通信框架Volley 1 个条目
  9. [C语言程序设计] 结构体基本知识 1 个条目
  10. [搜索引擎优化] 百度搜索引擎优化指南 3 个条目
  11. [移动开发] 刷机与root相关 2 个条目
  12. [Python程序设计] Tornado 服务器环境配置 3 个条目
窗口 -- [资讯]