第一章 Django之web框架(1)

Django 是新一代 Web 框架 中很是出色的成員。那麼 Web 框架這個術語的確切含義究竟是 什麼呢?html


  要回答這個問題,讓咱們來看看經過編寫標準的 CGI 程序來開發 Web 應用,這在大約1998年的時候很是流行。編寫 CGI Web 應用時,你須要本身處理全部的操做,就像你想烤麪包,可是都須要本身生火同樣。下面是實例,一個簡單的 CGI 腳本,用 Python 寫的,讀取數據庫並顯示最新發布的十本書。python

 1 #!/usr/bin/python 
 2  
 3 import MySQLdb 
 4  
 5 print "Content-Type: text/html" 
 6 print "<html><head><title>Books</title></head>" 
 7 print "<body>" 
 8 print "<h1>Books</h1>" 
 9 print "<ul>" 
10  
11 connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db') 
12 cursor = connection.cursor() 
13 cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10") 
14 for row in cursor.fetchall():     
15     print "<li>%s</li>" % row[0] 
16  
17 print "</ul>" 
18 print "</body></html>" 
19  
20 connection.close() 

 

代碼十分簡單。首先,根據 CGI 的要求輸出一行 Content-Type,接下來是一個空行。再接下來是一些 HTML 的起始標籤,而後鏈接數據庫並執行一些查詢操做,獲取最新的十本書。遍歷這些書,同時生成一個 HTML 的無序序列。最後,輸出 HTML 的結束標籤而且關閉數據庫鏈接。
  像這樣的一次性的動態頁面,從頭寫起的方法並不是必定很差。其中一點:這些代碼簡單易懂,就算是一個初起步的 開發者都能讀明白這16行的 Python 代碼,並且這些代碼從頭至尾作了什麼都能瞭解得一清二楚。不須要學習額外的背景知識,沒有額外的代碼須要去了解。一樣,也易於部署這16行代碼,只須要將它保存爲一個 latestbooks.cgi 的文件,上傳到 Web 服務器上,經過瀏覽器訪問便可。
  可是,一個 Web 應用要遠複雜於以上狀況,這種方法很快會失效,並且你將會要面對不少問 題: 數據庫

  • 當多個動態頁面須要同時鏈接數據庫時,將會發生什麼?固然,鏈接數據庫的代碼不該該同時存在於各個獨立的 CGI 腳本中,因此最踏實的作法是把這些代碼從新組織到一個公共函數裏面。
  • 一個開發人員確實須要去關注如何輸出 Content-Type 以及完成全部操做後去關閉數據庫麼?此類問題只會下降開發人員的工做效率,增長犯錯誤的概率。那些初始化和釋放相關的工做應該交給一些通用的框架來完成。
  • 若是這樣的代碼被重用到一個複合的環境中會發生什麼?每一個頁面都分別對應獨立的數據庫和密碼嗎?從這點看來,就須要一些環境相關的配置文件。
  • 若是一個 Web 設計師,徹底沒有 Python 開發經驗,可是又須要從新設計頁面的話,又將發生什麼呢?理想的狀況是,頁面顯示的邏輯與從數據庫中讀取書本記錄分隔開,這樣 Web 設計師的從新設計不會影響到以前的業務邏輯。

  以上正是 Web 框架致力於解決的問題。Web 框架爲應用程序提供了一套程序框架,這樣你能夠專一於編寫清晰、易維護的代碼,而無需從頭作起。簡單來講,這就是 Django 所能作的。django

 

原文:《The Django Book》 http://djangobook.py3k.cn/瀏覽器

相關文章
相關標籤/搜索