日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

中國最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2

Django教程

Django教程

閱讀 (4066)

手冊說明:

Django教程簡介

Django是一個可以使Web開發(fā)工作愉快并且高效的Web開發(fā)框架。 使用Django,使你能夠以最小的代價構建和維護高質量的Web應用。

    從好的方面來看,Web 開發(fā)激動人心且富于創(chuàng)造性;從另一面來看,它卻是份繁瑣而令人生厭的工作。 通過減少重復的代碼,Django 使你能夠專注于 Web 應用上有 趣的關鍵性的東西。 為了達到這個目標,Django 提供了通用Web開發(fā)模式的高度抽象,提供了頻繁進行的編程作業(yè)的快速解決方法,以及為“如何解決問題”提供了清晰明了的約定。 同時,Django 嘗試留下一些方法,來讓你根據(jù)需要在framework之外來開發(fā)。

    本教程的目的是將你培養(yǎng)成Django專家。 主要側重于兩方面: 第一,我們深度解釋 Django 到底做了哪些工作以及如何用她構建Web應用;第二,我們將會在適當?shù)牡胤接懻摳呒壍母拍睿⒔忉屓绾?在自己的項目中高效的使用這些工具。 通過閱讀此書,你將學會快速開發(fā)功能強大網站的技巧,并且你的代碼將會十分 清晰,易于維護。 本書的代碼清晰,易維護,通過學習,可以快速開發(fā)功能強大的網站。

    喜歡一個學習觀點以教促學, 一直以來, 學習的時候經常會發(fā)現(xiàn), 某個方法某個問題自己已經明白了, 但是在教給別人的時候確說不清楚, 所以慢慢的學會了以教促學這種方法, 在教給別人知識的同時也能夠提升自己對語言, 對框架的理解.

希望達到的目標:

  • 希望能寫出一個系列文章, 我也不知道到底能寫多少
  • 能夠讓認真閱讀這個系列的文章的人, 能在讀完之后做出一個簡單的博客
  • 教會讀者使用簡單的git操作和github
  • 希望能夠加深自己對Django的理解

Django是python中目前風靡的Web Framework, 那么什么叫做Framework呢, 框架能夠幫助你把程序的整體架構搭建好, 而我們所需要做的工作就是填寫邏輯, 而框架能夠在合適的時候調用你寫的邏輯, 而不需要我們自己去調用邏輯, 讓Web開發(fā)變的更敏捷.

Django是一個高級Python Web框架, 鼓勵快速,簡潔, 以程序設計的思想進行開發(fā). 通過使用這個框架, 可以減少很多開發(fā)麻煩, 使你更專注于編寫自己的app, 而不需要重復造輪子. Django免費并且開源.

Django特點

  • 完全免費并開源源代碼
  • 快速高效開發(fā)
  • 使用MTV架構(熟悉Web開發(fā)的應該會說是MVC架構)
  • 強大的可擴展性.

工作方式

用戶在瀏覽器中輸入URL后的回車, 瀏覽器會對URL進行檢查, 首先判斷協(xié)議,如果是http就按照 Web 來處理, 然互調用DNS查詢, 將域名轉換為IP地址, 然后經過網絡傳輸?shù)竭_對應Web服務器, 服務器對url進行解析后, 調用View中的邏輯(MTV中的V), 其中又涉及到Model(MTV中的M), 與數(shù)據(jù)庫的進行交互, 將數(shù)據(jù)發(fā)到Template(MTV中的T)進行渲染, 然后發(fā)送到瀏覽器中, 瀏覽器以合適的方式呈現(xiàn)給用戶

框架是什麼?

Django 在新一代的 Web框架 中非常出色,為什么這么說呢?

為回答該問題,讓我們考慮一下_不使用_框架設計 Python 網頁應用程序的情形。 貫穿整本書,我們多次展示不使用框架實現(xiàn)網站基本功能的方法,讓讀者認識到框架開發(fā)的方便。 (不使用框架,更多情況是沒有合適的框架可用。 最重要的是,理解實現(xiàn)的來龍去脈會使你成為一個優(yōu)秀的web開發(fā)者。)

使用Python開發(fā)Web,最簡單,原始和直接的辦法是使用CGI標準,在1998年這種方式很流行。 現(xiàn)在從應用角度解釋它是如何工作: 首先做一個Python腳本,輸出HTML代碼,然后保存成.cgi擴展名的文件,通過瀏覽器訪問此文件。 就是這樣。

如下示例,用Python CGI腳本顯示數(shù)據(jù)庫中最新出版的10本書: 不用關心語法細節(jié);僅僅感覺一下基本實現(xiàn)的方法:

#!/usr/bin/env python

import MySQLdb

print "Content-Type: text/html\n"
print "<html><head><title>Books</title></head>"
print "<body>"
print "<h1>Books</h1>"
print "<ul>"

connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db')
cursor = connection.cursor()
cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10")

for row in cursor.fetchall():
    print "<li>%s</li>" % row[0]

print "</ul>"
print "</body></html>"

connection.close()

首先,用戶請求CGI,腳本代碼打印Content-Type行,后面跟著換行。 再接下 來是一些HTML的起始標簽,然后連接數(shù)據(jù)庫并執(zhí)行一些查詢操作,獲取最新的十本書。 在遍歷這些書的同時,生成一個書名的HTML列表項。 最后,輸出HTML的結束標簽并且關閉數(shù)據(jù)庫連接。

像這樣的一次性的動態(tài)頁面,從頭寫起的方法并非一定不好。 其中一點: 這些代碼簡單易懂,就算是一個初起步的 開發(fā)者都能讀明白這16行的Python的代碼,而且這些代碼從頭到尾做了什么都能了解得一清二楚。 不需要學習額外 的背景知識,沒有額外的代碼需要去了解。 同樣,也易于部署這16行代碼,只需要將它保存為一個latestbooks.cgi 的 文件,上傳到網絡服務器上,通過瀏覽器訪問即可。

盡管實現(xiàn)很簡單,還是暴露了一些問題和不便的地方。 問你自己這幾個問題:

  • 應用中有多處需要連接數(shù)據(jù)庫會怎樣呢? 每個獨立的CGI腳本,不應該重復寫數(shù)據(jù)庫連接的代碼。 比較實用的辦法是寫一個共享函數(shù),可被多個代碼調用。
  • 一個開發(fā)人員 確實 需要去關注如何輸出Content-Type以及完成所有操作后去關閉數(shù)據(jù) 庫么? 此類問題只會降低開發(fā)人員的工作效率,增加犯錯誤的幾率。 那些初始化和釋放 相關的工作應該交給一些通用的框架來完成。
  • 如果這樣的代碼被重用到一個復合的環(huán)境中會發(fā)生什么? 每個頁面都分別對應獨立的數(shù)據(jù)庫和密碼嗎?
  • 如果一個Web設計師,完全沒有Python開發(fā)經驗,但是又需要重新設計頁面的話,又將 發(fā)生什么呢? 一個字符寫錯了,可能導致整個應用崩潰。 理想的情況是,頁面顯示的邏輯與從數(shù)據(jù)庫中讀取書本記錄分隔開,這樣 Web設計師的重新設計不會影響到之前的業(yè)務邏輯。

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

MVC 設計模式

讓我們來研究一個簡單的例子,通過該實例,你可以分辨出,通過Web框架來實現(xiàn)的功能與之前的方式有何不同。 下面就是通過使用Django來完成以上功能的例子: 首先,我們分成4個Python的文件,(models.py ,views.py , urls.py ) 和html模板文件 (latest_books.html )

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

然后,不用關心語法細節(jié);只要用心感覺整體的設計。 這里只關注分割后的幾個文件:

  • models.py 文件主要用一個 Python 類來描述數(shù)據(jù)表。 稱為 模型(model) 。 運用這個類,你可以通過簡單的 Python 的代碼來創(chuàng)建、檢索、更新、刪除 數(shù)據(jù)庫中的記錄而無需寫一條又一條的SQL語句。
  • views.py文件包含了頁面的業(yè)務邏輯。 latest_books()函數(shù)叫做視圖。
  • urls.py 指出了什么樣的 URL 調用什么的視圖。 在這個例子中 /latest/ URL 將會調用 latest_books()這個函數(shù)。 換句話說,如果你的域名是example.com,任何人瀏覽網址http://example.com/latest/將會調用latest_books()這個函數(shù)。
  • latest_books.html 是 html 模板,它描述了這個頁面的設計是如何的。 使用帶基本邏輯聲明的模板語言,如{% for book in book_list %}

結合起來,這些部分松散遵循的模式稱為模型-視圖-控制器(MVC)。 簡單的說, MVC 是一種軟件開發(fā)的方法,它把代碼的定義和數(shù)據(jù)訪問的方法(模型)與請求邏輯 (控制器)還有用戶接口(視圖)分開來。 我們將在第5章更深入地討論MVC。

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

本書中,每個組件都有它自己的一個章節(jié)。 比如,第三章涵蓋了視圖,第四章是模板, 而第五章是模型。

Django 歷史

在我們討論代碼之前我們需要先了解一下 Django 的歷史。 從上面我們注意到:我們將向你展示如何不使用捷徑來完成工作,以便能更好的理解捷徑的原理 同樣,理解Django產生的背景,歷史有助于理解Django的實現(xiàn)方式。

如果你曾編寫過網絡應用程序。 那么你很有可能熟悉之前我們的 CGI 例子。

  1. 從頭開始編寫網絡應用程序。
  2. 從頭編寫另一個網絡應用程序。
  3. 從第一步中總結(找出其中通用的代碼),并運用在第二步中。
  4. 重構代碼使得能在第 2 個程序中使用第 1 個程序中的通用代碼。
  5. 重復 2-4 步驟若干次。
  6. 意識到你發(fā)明了一個框架。

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

Django 是從真實世界的應用中成長起來的,它是由 堪薩斯(Kansas)州 Lawrence 城中的一個 網絡開發(fā)小組編寫的。 它誕生于 2003 年秋天,那時 Lawrence Journal-World 報紙的 程序員 Adrian Holovaty 和 Simon Willison 開始用 Python 來編寫程序。

當時他們的 World Online 小組制作并維護當?shù)氐膸讉€新聞站點, 并在以新聞界特有的快節(jié)奏開發(fā)環(huán)境中逐漸發(fā)展。 這些站點包括有 LJWorld.com、Lawrence.com 和 KUsports.com, 記者(或管理層) 要求增加的特征或整個程序都能在計劃時間內快速的被建立,這些時間通常只有幾天 或幾個小時。 因此,Adrian 和 Simon 開發(fā)了一種節(jié)省時間的網絡程序開發(fā)框架, 這是在截止時間前能完成程序的唯一途徑。

2005 年的夏天,當這個框架開發(fā)完成時,它已經用來制作了很多個 World Online 的站點。 當時 World Online 小組中的 Jacob Kaplan-Moss 決定把這個框架發(fā)布為一個開源軟件。

從今往后數(shù)年,Django是一個有著數(shù)以萬計的用戶和貢獻者,在世界廣泛傳播的完善開源項目。 原來的World Online的兩個開發(fā)者(Adrian and Jacob)仍然掌握著Django,但是其發(fā)展方向受社區(qū)團隊的影響更大。

這些歷史都是相關聯(lián)的,因為她們幫助解釋了很重要的兩點。

第一,Django最可愛的地方。 Django誕生于新聞網站的環(huán)境中,因此它提供很多了特性(如第6章會說到的管理后臺),非常適合內容類的網站,如Amazon.com, craigslist.org和washingtonpost.com,這些網站提供動態(tài)的,數(shù)據(jù)庫驅動的信息。 (不要看到這就感到沮喪,盡管Django擅長于動態(tài)內容管理系統(tǒng), 但并不表示Django主要的目的就是用來創(chuàng)建動態(tài)內容的網站。 某些方面 特別高效 與其他方面 不高效 是有區(qū)別的, Django在其他方面也同樣高效。)

第二,Django的起源造就了它的開源社區(qū)的文化。 因為Django來自于真實世界中的代碼,而不是 來自于一個科研項目或者商業(yè)產品,她主要集中力量來解決Web開發(fā)中遇到的問題,同樣 也是Django的開發(fā)者經常遇到的問題。 這樣,Django每天在現(xiàn)有的基礎上進步。 框架的開發(fā)者對于讓開發(fā)人員節(jié)省時間,編寫更加容易維護的程序,同時保證程序運行的效率具有極大的興趣。 無他,開發(fā)者動力來源于自己的目標:節(jié)省時間,快樂工作。 (坦率地講,他們使用了自己公司的產品。)

如何閱讀本書

在編寫本書時,我們努力嘗試在可讀性和參考性間做一個平衡,當然本書會偏向于可 讀性。 本書的目標,之前也提過,是要將你培養(yǎng)成一名Django專家,我們相信,最好 的方式就是提供文章和充足的實例,而不是一堆詳盡卻乏味的關于Django特色的手冊。 (曾經有人說過,如果僅僅教字母表是無法教會別人說話的。

按照這種思路,我們推薦按順序閱讀第 1-12 章。 這些章節(jié)構成了如何使用 Django 的基礎;讀過之后,你就可以搭建由 Django 支撐的網站了。 1-7章是核心課程,8-11章講述Django的高級應用,12章講述部署相關的知識。 剩下的13-20章,講述Django特有的特點,可以任意順序閱讀。

附錄部分用作參考資料。 要回憶語法或查閱 Django 某部分的功能概要時,你偶爾可能會回來翻翻這些資料以及 http://www.djangoproject.com/ 上的免費文檔。

所需編程知識

本書讀者需要理解基本的面向過程和面向對象編程: 流程控制( if , while 和 for ),數(shù)據(jù)結構(列表,哈希表/字典),變量,類和對象。

Web開發(fā)經驗,正如你所想的,也是非常有幫助的,但是對于閱讀本書,并不是必須的。 通過本書,我們盡量給缺乏經驗的開發(fā)人員提供在Web開發(fā)中最好的實踐。

Python所需知識

本質上來說, Django 只不過是用 Python 編寫的一組類庫。 用 Django 開發(fā)站點就是使用這些類庫編寫 Python 代碼。 因此,學習 Django 的關鍵就是學習如何進行 Python 編程并理解 Django 類庫的運作方式。

如果你有Python開發(fā)經驗,在學習過程中應該不會有任何問題。 基本上,Django的代碼并 沒有使用一些黑色魔法(例如代碼中的花哨技巧,某個實現(xiàn)解釋或者理解起來十分困難)。 對你來說,學習Django就是學習她的命名規(guī)則和API。

如果你沒有使用 Python 編程的經驗,你一定會學到很多東西。 它是非常易學易用的。 雖然這本書沒有包括一個完整的 Python 教程, 但也算是一個恰當?shù)慕榻B了 Python特征和 功能的集錦。 當然,我們推薦你讀一下官方的 Python 教程,它可 以從 http://docs.python.org/tut/ 在線獲得。 另外我們也推薦 Mark Pilgrims的 書Dive Into Python ( http://www.diveintopython.org/ )

Django版本支持

此書內容對Django 1.1兼容。

Django的開發(fā)者保證主要版本號向后兼容。 這意味著,你用Django 1.1寫的應用,可以用于1.2,1.3,1.9等所有以1開頭的版本

如果Django到了2.0,你的應用可能不再兼容,需要重寫,但是,2.0是很遙遠的事情。 對此,可以參考一下1.0的開發(fā)周期,整整3年的時間。 (這與Python語言的兼容策略非常像: 在python 2.0下寫的代碼可以在python 2.6下運行,但不一定能在python3.0下運行

所以,此書覆蓋1.1版本,可以使用很長時間。

獲取幫助

Django的最大的益處是,有一群樂于助人的人在Django社區(qū)上。 你可以毫無約束的提各種 問題在上面,如:django的安裝,app 設計,db 設計,發(fā)布。

  • Django郵件列表是很多Django用戶提出問題、回答問題的地方。 可以通過http://www.djangoproject.com/r/django-users 來免費注冊。
  • 如果Django用戶遇到棘手的問題,希望得到及時地回復,可以使用Django IRC channel。 在Freenode IRC network加入#django

最后,本教程希望通過文字和圖的結合讓讀者能夠初步理解Django的工作方式


關閉
程序員人生
主站蜘蛛池模板: 一级肉体全黄裸片 | 成人天堂资源www在线 | 国产精品视频一二三四区 | 亚洲精品国产精品乱码 | 免费成人高清在线视频 | 99久久国产免费 | 久久久久久网 | 在线午夜| 亚洲成人三区 | 久久福利免费视频 | 福利毛片| 久久女人| 久久精品首页 | 操人视频网站 | 久久69精品久久久久久久电影好 | 精品视频久久 | 久久国产一区二区三区 | 欧美一区二区三区精品免费 | 久9re热视频这里只有精品 | 99久久久久国产精品免费 | 精品久久久网站 | 国产精品久久久久久久久久久久久久 | 午夜激情视频在线 | 精品国产一二三区 | 亚洲精品免费在线观看 | 欧美午夜一区二区福利视频 | 亚洲 中文 欧美 日韩 在线观看 | 欧美日韩国产中文字幕 | 99精品国产一区二区 | 日韩av中文| 国产精品久久久久久久免费软件 | 麻豆一区 | 甜一伦一性一交 | 国产3区| 久久久久久久久久久91 | 国产精品一区二区三区免费观看 | 爱爱免费网站 | 岛国大片在线 | 成人av免费在线看 | av九九| 日韩成人在线观看 |