国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Django & MVC

From: http://djangobook.py3k.cn

MVC 設(shè)計模式

讓我們來研究一個簡單的例子,通過該實例,你可以分辨出,通過Web框架來實現(xiàn)的功能與之前的方式有何不同。下面就是通過使用Django來完成以上功能的例子:

 

# models.py (the database tables)

from django.db import models

class Book(models.Model):
    name = models.CharField(maxlength=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>
5

先不要擔心這個東西是 如何 工作的,我們主要是先想讓你知道總體的設(shè)計,這里關(guān)鍵要注意的是 分離問題

2

 

  • models.py 文件主要用一個 Python 類來描述數(shù)據(jù)表。稱為 模型(model) 。 運用這個類,你可以通過簡單的 Python 的代碼來創(chuàng)建、檢索、更新、刪除 數(shù)據(jù)庫中的記錄而無需寫一條又一條的SQL語句。

     

  • view.py 文件的 latest_books() 函數(shù)中包含了該頁的業(yè)務(wù)層邏輯。這個函數(shù)叫做 視圖(view) 。

     

  • urls.py 指出了什么樣的 URL 調(diào)用什么的視圖,在這個例子中 /latest/ URL 將會調(diào)用 latest_books() 這個函數(shù)

    2

     

  • latest_books.html 是 html 模板,它描述了這個頁面的設(shè)計是如何的。

     

這些部分松散的組合在一起就是模型-視圖-控制器(MVC)的設(shè)計模式。簡單的說, MVC 是一種軟件開發(fā)的方法,它把代碼的定義和數(shù)據(jù)訪問的方法(模型)與請求邏輯 (控制器)還有用戶接口(視圖)分開來。

 

這種設(shè)計模式關(guān)鍵的優(yōu)勢在于各種組件都是 松散結(jié)合 的。這樣,每個由 Django驅(qū)動 的Web應(yīng)用都有著明確的目的,并且可獨立更改而不影響到其它的部分。比如,開發(fā)者 更改一個應(yīng)用程序中的 URL 而不用影響到這個程序底層的實現(xiàn)。設(shè)計師可以改變 HTML 頁面 的樣式而不用接觸 Python 代碼。數(shù)據(jù)庫管理員可以重新命名數(shù)據(jù)表并且只需更改一個地方,無需從一大堆文件中進行查找和替換。

 

本書中,每個組件都有它自己的一個章節(jié)。比如,第三章涵蓋了視圖,第四章是模板, 而第五章是模型。同時第五章也深入討論了 Django 的 MVC 思想。

django 歷史

在我們討論代碼之前我們需要先了解一下 Django 的歷史。知道了一些歷史知識有助于理解為什么 Django 要建立這個框架,因為這些歷史有助于理解Django為何會這樣運作。

1

 

如果你曾編寫過網(wǎng)絡(luò)應(yīng)用程序。那么你很有可能熟悉之前我們的 CGI 例子。傳統(tǒng)的 網(wǎng)絡(luò)開發(fā)人員的開發(fā)流程是這樣的:

1

 

  1. 從頭開始編寫網(wǎng)絡(luò)應(yīng)用程序。

     

  1. 從頭編寫另一個網(wǎng)絡(luò)應(yīng)用程序。

     

  1. 從第一步中總結(jié)(找出其中通用的代碼),并運用在第二步中。

     

  1. 重構(gòu)代碼使得能在第 2 個程序中使用第 1 個程序中的通用代碼。

     

  1. 重復(fù) 2-4 步驟若干次。

     

  1. 意識到你發(fā)明了一個框架。

     

這正是為什么 Django 建立的原因!

 

Django 是從真實世界的應(yīng)用中成長起來的,它是由 堪薩斯(Kansas)州 Lawrence 城中的一個 網(wǎng)絡(luò)開發(fā)小組編寫的。它誕生于 2003 年秋天,那時 Lawrence Journal-World 報紙的 程序員 Adrian Holovaty 和 Simon Willison 開始用 Python 來編寫程序。 當時他們的 World Online 小組制作并維護當?shù)氐膸讉€新聞?wù)军c, 并在以新聞界特有的快節(jié)奏開發(fā)環(huán)境中逐漸發(fā)展. 這些站點包括有 LJWorld.com、Lawrence.com 和 KUsports.com, 記者(或管理層) 要求增加的特征或整個程序都能在計劃時間內(nèi)快速的被建立,這些時間通常只有幾天 或幾個小時。因此為了需要,Adrian 和 Simon 開發(fā)了一種節(jié)省時間的網(wǎng)絡(luò)程序開發(fā)框架, 這是在截止時間前能完成程序的唯一途徑。

 

2005 年的夏天,當這個框架開發(fā)完成時,它已經(jīng)用來制作了很多個 World Online 的站點。 當時 World Online 小組中的 Jacob Kaplan-Moss 決定把這個框架發(fā)布為一個開源軟件。 他們在 2005 年的 7 月發(fā)布并取名為 Django,來源于一個著名的爵士樂吉他演奏家 Django Reinhardt。

 

雖然現(xiàn)在 Django 是一個全世界開發(fā)者參與的開源項目,但原始的 World Online 開發(fā)者們 仍然提供主要的指導(dǎo)來促進這個框架的成長。 World Online 還有其它方面的重要貢獻,比如雇員時間、 市場材料以及框架的 Web 網(wǎng)站的主機和帶寬(http://www.djangoproject.com/)。

 

這些歷史都是相關(guān)聯(lián)的,因為她們幫助解釋了很重要的兩點。第一,Django最可愛的地方, 因為Django誕生于一個新聞環(huán)境,她提供了很多的功能(特別是她的管理接口,見第6章), 特別適合提供內(nèi)容的網(wǎng)站,例如eBay, craigslist.org和washingtonpost.com,提供一種 基于數(shù)據(jù)庫的動態(tài)網(wǎng)站。(不要看到這就感到沮喪,盡管Django擅長于動態(tài)內(nèi)容管理系統(tǒng), 但并不表示Django主要的目的就是用來創(chuàng)建動態(tài)內(nèi)容的網(wǎng)站。 某些方面 特別高效 與 其他方面 不高效 是有區(qū)別的)

 

第二,Django的起源造就她的開源社區(qū),因為Django來自于真實世界中的代碼,而不是 來自于一個科研項目或者商業(yè)產(chǎn)品,她主要集中力量來解決Web開發(fā)中遇到的問題,同樣 也是Django的開發(fā)者經(jīng)常遇到的問題。這樣,Django每天在現(xiàn)有的基礎(chǔ)上進步??蚣艿?開發(fā)者對于為開發(fā)人員節(jié)省開發(fā)時間具有極大的興趣,編寫更加容易維護的程序,同時 保證程序運行的效率。開發(fā)人員自我激勵,盡量的節(jié)省時間和享受他們的工作(To put it bluntly, they eat their own dog food.)

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
第一章:介紹Django
Django簡介
DjangoWeb開發(fā)框架值得選擇嗎?
為什么Flutter是跨平臺開發(fā)的終極之選
MVC架構(gòu)開發(fā)綜述
WCF是什么
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服