值得信赖的彩票平台

Django 中文教程


多端閱讀:

  • 在PC/MAC上查看 《Django 中文教程》:
    下載Django 中文教程離線版客戶端,進入客戶端后通過搜索當前教程手冊的名稱并下載,就可以查看當前離線教程文檔。
  • 在手機上查看《Django 中文教程》:
  • 在手機APP上查看 《Django 中文教程》:

    下載w3cschool手機App端 請從各大安卓應用商店、蘋果App Store搜索并下載w3cschool手機客戶端,在App中搜索當前教程手冊的名稱查看。

    App下載

手冊簡介:

Django3 教程 Django 是一個開放源代碼的Web應用框架,由Python寫成。

手冊說明:

Django教程簡介

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

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

    本教程的目的是將你培養成Django專家。 主要側重于兩方面: 第一,我們深度解釋 Django 到底做了哪些工作以及如何用她構建Web應用;第二,我們將會在適當的地方討論更高級的概念,并解釋如何 在自己的項目中高效的使用這些工具。 通過閱讀此書,你將學會快速開發功能強大網站的技巧,并且你的代碼將會十分 清晰,易于維護。 本書的代碼清晰,易維護,通過學習,可以快速開發功能強大的網站。

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

希望達到的目標:

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

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

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

Django特點

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

工作方式

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

框架是什麼?

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

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

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

如下示例,用Python CGI腳本顯示數據庫中最新出版的10本書: 不用關心語法細節;僅僅感覺一下基本實現的方法:

#!/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的起始標簽,然后連接數據庫并執行一些查詢操作,獲取最新的十本書。 在遍歷這些書的同時,生成一個書名的HTML列表項。 最后,輸出HTML的結束標簽并且關閉數據庫連接。

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

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

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

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

MVC 設計模式

讓我們來研究一個簡單的例子,通過該實例,你可以分辨出,通過Web框架來實現的功能與之前的方式有何不同。 下面就是通過使用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>

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

  • 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 是一種軟件開發的方法,它把代碼的定義和數據訪問的方法(模型)與請求邏輯 (控制器)還有用戶接口(視圖)分開來。 我們將在第5章更深入地討論MVC。

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

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

Django 歷史

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

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

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

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

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

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

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

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

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

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

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

如何閱讀本書

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

按照這種思路,我們推薦的就是按順序閱讀,從基礎開始了解Django的獨特之處,等全部都閱讀完之后,就可以任意順序閱讀。

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

所需編程知識

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

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

Python所需知識

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

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

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

Django版本支持

此書內容對Django 3.0兼容。

學習本教程前你需要了解一些基礎的Web知識及Python基礎教程。

Django 版本與 Python 環境的對應表:

 Django 版本 Python 版本
                                                     1.5                                                     2.6.5, 2.7, 3.2, 3.3.
 1.6 2.6, 2.7, 3.2, 3.3
 1.7 2.7, 3.2, 3.3, 3.4 (2.6 不支持了)
 1.8 LTS 2.7, 3.2, 3.3, 3.4, 3.5 (長期支持版本 LTS)
 1.9 2.7, 3.4, 3.5 (3.3 不支持了)
 1.10 2.7, 3.4, 3.5
 1.11 LTS 2.7, 3.4, 3.5, 3.6 (最后一個支持 Python 2.7 的版本 )
 2.0 3.4, 3.5, 3.6 (注意,不再支持 Python 2)
 2.1 3.5, 3.6, 3.7
 2.2 LTS 3.5, 3.6, 3.7
 3.0 3.6, 3.7, 3.8

獲取幫助

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

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

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


更新記錄:

返回w3cschool官網主頁

在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號

意見反饋
返回頂部
值得信赖的彩票平台

              桃源县| 瑞丽市| 辉县市| 东乌珠穆沁旗| 丹阳市| 亚东县| 洛川县| 祥云县| 绥阳县| 遂平县| 长乐市| 博客| 新兴县| 泸溪县| 两当县| 盖州市| 库伦旗| 清徐县|