欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Django & MVC

From: http://djangobook.py3k.cn

MVC 設計模式

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

 

# 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

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

2

 

  • models.py 文件主要用一個(gè) Python 類(lèi)來(lái)描述數據表。稱(chēng)為 模型(model) 。 運用這個(gè)類(lèi),你可以通過(guò)簡(jiǎn)單的 Python 的代碼來(lái)創(chuàng )建、檢索、更新、刪除 數據庫中的記錄而無(wú)需寫(xiě)一條又一條的SQL語(yǔ)句。

     

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

     

  • urls.py 指出了什么樣的 URL 調用什么的視圖,在這個(gè)例子中 /latest/ URL 將會(huì )調用 latest_books() 這個(gè)函數

    2

     

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

     

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

 

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

 

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

django 歷史

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

1

 

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

1

 

  1. 從頭開(kāi)始編寫(xiě)網(wǎng)絡(luò )應用程序。

     

  1. 從頭編寫(xiě)另一個(gè)網(wǎng)絡(luò )應用程序。

     

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

     

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

     

  1. 重復 2-4 步驟若干次。

     

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

     

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

 

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

 

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

 

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

 

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

 

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

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

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久