書是一本介紹如何基于Django框架開發(fā)網(wǎng)站的書籍,分4章。第1章是Python、Django發(fā)展歷史與概要介紹和安裝方法,以及HTTP的基礎(chǔ)知識;第2章詳細(xì)介紹了Django基本知識,包括如何啟動Django服務(wù)、Hello World程序、HttpRequest與HttpResponse對象、setting.py的配置、cookie和session、Django的MTV開發(fā)模式框架、Django的模型與數(shù)據(jù)庫的管理、Django的視圖管理、Django的模板管理以及基于Python Requests類數(shù)據(jù)驅(qū)動的HTTP接口測試;第3章以電子商務(wù)網(wǎng)站為例,介紹電子商務(wù)網(wǎng)站的需求、電子商務(wù)網(wǎng)站數(shù)據(jù)Model設(shè)計以及用戶信息、商品信息、購物車、送貨地址、訂單、電子支付模塊,最后介紹如何建立自定義的錯誤頁面;第4章在第3章的基礎(chǔ)上介紹如何構(gòu)建安全的網(wǎng)站,分別是密碼的加密、防止CSRF和XSS的攻擊、權(quán)限操作的漏洞以及防止SQL注入。
本書可作為準(zhǔn)備使用Django框架開發(fā)網(wǎng)站、學(xué)習(xí)接口測試的軟件工作人員的學(xué)習(xí)用書,也可作為在校本科生和研究生的參考用書。
前言
在百度百科中對Python是這樣介紹的:
“Python, 是一種面向?qū)ο蟮慕忉屝陀嬎銠C程序設(shè)計語言,由荷蘭人Guido van Rossum于1989年發(fā)明,第一個公開發(fā)行版發(fā)行于1991年。
Python是純粹的自由軟件,源代碼和解釋器CPython遵循GPL(GNU General Public License)協(xié)議。Python語法簡潔清晰,特色之一是強制用空白符(white space)作為語句縮進(jìn)。Python具有豐富和強大的庫,它常被昵稱為膠水語言,能夠把用其他語言制作的各種模塊(尤其是C/C++)很輕松地聯(lián)結(jié)在一起。常見的一種應(yīng)用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然后對其中有特別要求的部分用更合適的語言改寫,例如,3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而后封裝為Python可以調(diào)用的擴(kuò)展類庫。需要注意的是,在使用擴(kuò)展類庫的時候,可能需要考慮平臺問題,因為某些擴(kuò)展類庫可能不提供跨平臺的實現(xiàn)。
2017年7月20日,IEEE發(fā)布編程語言排行榜:Python高居首位。”
在許多歐美國家,Python已經(jīng)成為各大學(xué)的基本教學(xué)語言。另外,隨著大數(shù)據(jù)與人工智能(AI)技術(shù)的興起,Python語言在這方面也表現(xiàn)得非常出色。
Python有以下幾個Web開發(fā)框架,分別是Flask、Django、Tornado、Bottle、web.py、web2py及Quixote。就本人而言,我最喜歡的是Django這個框架,雖然掌握這個框架需要學(xué)習(xí)很多知識,但是Django 的目的是為了讓開發(fā)者能夠快速地開發(fā)一個網(wǎng)站,它提供了很多模塊,如admin。
作者認(rèn)為剛開始學(xué)習(xí)Django框架,只需要掌握一些最基本的知識,不需要一開始就學(xué)習(xí)全部知識,只要掌握了這些基本知識,再根據(jù)自己的需求學(xué)習(xí)其他高深的知識,就會變得更加容易了,這正是書寫本書的目的:讓讀者在最短的時間內(nèi)盡快掌握Django框架。建議: 如果沒有接觸過Django框架,甚至沒有接觸過Web開發(fā),就可以首選本書。
本書第1章是Python、Django發(fā)展歷史與概要的介紹和安裝方法以及HTTP的基礎(chǔ)知識,但是作者在這里沒有對Python語言進(jìn)行介紹,如果沒有Python語言的任何基礎(chǔ),建議通過其他渠道學(xué)習(xí)掌握Python語言后再來學(xué)習(xí)此書。
第2章介紹Django基本知識。這里對Django的基本知識介紹得比較全面, 讀者可能看不懂2.7節(jié)到2.9節(jié)介紹的知識,只要了解一些概念就可以了,經(jīng)常使用到的知識會在第3章中結(jié)合案例進(jìn)行詳細(xì)介紹。
第3章結(jié)合電子商務(wù)網(wǎng)站項目,通過用戶信息、商品信息、購物車、送貨地址、訂單和電子支付這6個模塊進(jìn)行詳細(xì)介紹。對于其中的每個子模塊,通過如何設(shè)計url.py、如何開發(fā)view.py、模板的設(shè)計、接口測試用例的設(shè)計以及接口測試代碼的書寫進(jìn)行介紹。這里特別需要指出的是,隨著軟件質(zhì)量在軟件研發(fā)中的地位越來越高,并且隨著迭代快速響應(yīng)用戶需求的普及,自動化測試顯得越來越重要。但是,單元測試代碼的繁多以及基于GUI的自動化測試受界面影響很大的原因,這些測試都沒能很好地普及,而基于單元測試與基于GUI的自動化測試之間的接口測試在業(yè)界卻越來越普及。又由于Python提供的Requests類能夠更好地配合接口測試的開發(fā),所以作者在本書中對接口測試的技術(shù)和實現(xiàn)方法進(jìn)行了詳細(xì)描述。作者也是一邊書寫本書一邊書寫電子商務(wù)網(wǎng)站和接口測試代碼,每次程序結(jié)構(gòu)發(fā)生變化,都會運行一下以前寫好的接口測試代碼,以保證新的修改沒有影響以前的功能。另外,接口測試的運行速度遠(yuǎn)遠(yuǎn)快于基于GUI的自動化測試。本章包含的接口測試用例共49條,全部運行,耗時僅為2.709499s。
第4章在第3章的基礎(chǔ)上介紹如何構(gòu)建一個安全的網(wǎng)站,分別是密碼的加密、防止CSRF和XSS的攻擊、權(quán)限操作的漏洞以及防止SQL注入。由于第3章對程序進(jìn)行了很好的封裝,所以在這里對產(chǎn)品和測試代碼的修改變得更加簡單了。正如在本書中作者所寫的那樣,我們不可能一開始就能書寫一個易于維護(hù)的好代碼,這需要在書寫代碼的過程中不斷地優(yōu)化。現(xiàn)在敏捷技術(shù)提倡研發(fā)過程的迭代優(yōu)化,同樣,在書寫代碼時也需要進(jìn)行迭代優(yōu)化。
顧翔2018年2月于上海
〖1〗〖1〗〖2〗
目錄
第1章Python、Django和HTTP1
1.1Python語言1
1.1.1Python語言概述1
1.1.2Python的安裝3
1.2Django 框架4
1.2.1Django介紹4
1.2.2Django的安裝5
1.3HTTP概述6
1.3.1HTTP的工作原理7
1.3.2HTTP的請求8
1.3.3HTTP的應(yīng)答9
1.3.4HTTP的連接性13
1.3.5HTTP的無狀態(tài)15
第2章Django基本知識17
2.1啟動Django服務(wù)17
2.2Hello World程序21
2.2.1直接打印顯示內(nèi)容21
2.2.2通過文件模板顯示內(nèi)容22
2.2.3文件模板參數(shù)22
2.3獲取參數(shù)23
2.3.1通過GET方式獲取23
2.3.2通過POST方式獲取23
2.4HttpRequest對象與HttpResponse對象27
2.4.1HttpRequest對象27
2.4.2HttpResponse對象28
2.5setting.py的配置29
2.5.1中間件介紹29
2.5.2其他配置介紹30〖1〗〖1〗〖2〗2.5.3自定義靜態(tài)文件38
2.5.4案例39
2.6session和cookie42
2.6.1session43
2.6.2cookie45
2.6.3Django的用戶登錄和注冊機制47
2.7Django的MTV開發(fā)模式框架49
2.8Django的模型與數(shù)據(jù)庫的管理50
2.8.1Django的數(shù)據(jù)庫50
2.8.2Django的模型51
2.8.3Django的后臺管理55
2.8.4Django如何對數(shù)據(jù)庫進(jìn)行操作57
2.9Django的視圖管理61
2.9.1urls.py中路徑的定義61
2.9.2方法中顯示內(nèi)容63
2.9.3處理表單63
2.9.4分頁功能65
2.10Django的模板管理66
2.10.1變量的使用66
2.10.2標(biāo)簽的使用66
2.10.3過濾器的使用72
2.11基于Python Requests類數(shù)據(jù)驅(qū)動的HTTP接口測試75
2.11.1測試金字塔75
2.11.2unittest76
2.11.3requests對象的介紹與使用80
2.11.4數(shù)據(jù)驅(qū)動的自動化接口測試85
2.11.5進(jìn)一步優(yōu)化89
第3章電子商務(wù)網(wǎng)站的實現(xiàn)92
3.1需求描述92
3.1.1用戶信息模塊92
3.1.2商品信息模塊92
3.1.3購物車模塊92
3.1.4送貨地址模塊93
3.1.5訂單模塊93
3.1.6訂單支付模塊93
3.2數(shù)據(jù)Model設(shè)計93
3.3用戶信息模塊95
3.3.1用戶注冊96
3.3.2用戶登錄104
3.3.3用戶信息顯示109
3.3.4用戶登錄密碼的修改130
3.4商品信息模塊134
3.4.1商品信息的維護(hù)135
3.4.2商品概要信息的分頁顯示137
3.4.3商品信息的模糊查詢144
3.4.4商品信息的詳情顯示146
3.5購物車模塊149
3.5.1把商品放入購物車150
3.5.2查看購物車中的商品155
3.5.3修改購物車中的商品數(shù)量161
3.5.4刪除購物車中的某種商品164
3.5.5刪除購物車內(nèi)所有的商品165
3.6送貨地址模塊167
3.6.1送貨地址的添加與顯示167
3.6.2送貨地址的修改175
3.6.3送貨地址的刪除179
3.7訂單模塊181
3.7.1總訂單的生成和顯示182
3.7.2查看所有訂單192
3.7.3刪除訂單197
3.8電子支付模塊200
3.9建立自定義的錯誤頁面200
第4章構(gòu)建安全的網(wǎng)站205
4.1密碼的加密205
4.2防止CSRF攻擊206
4.2.1CSRF攻擊介紹206
4.2.2Django是如何防范CSRF攻擊的 207
4.2.3針對CSRF防御接口測試代碼的調(diào)整208
4.3權(quán)限操作的漏洞212
4.4防止XSS攻擊218
4.5防止SQL注入218
參考文獻(xiàn)220