摘要:本文詳細介紹了Python WEB開發的基礎入門。以一個博客站點的開發爲例講解了基於Django框架開發WEB站點的全過程。經過本文的學習能夠快速掌握基於Django的Python WEB的開發方法,進行WEB站點的實踐開發。
數十款阿里雲產品限時折扣中,趕忙點擊這裏,領劵開始雲上實踐吧!
演講嘉賓簡介:
韋瑋,企業家,資深IT領域專家/講師/做家,暢銷書《精通Python網絡爬蟲》做者,阿里雲社區技術專家。html
本次直播視頻精彩回顧,戳這裏!
本節課代碼及講義下載,戳這裏!前端
本次的分享主要圍繞如下幾個方面:python
WEB開發技術主要用於進行網站開發,你們可使用Python進行網站的開發。進行網站開發最經常使用的語言是PHP,但Python做爲一門比較通用的編程語言,它在WEB開發領域一樣是比較適合的。在本文中將會向你們介紹如何使用Python進行WEB開發。在使用Python進行WEB開發時,可使用不一樣的框架好比Django、Flask等,固然也能夠不基於任何框架直接使用CGI編程進行站點開發。本文將與你們分享如何使用Django來進行WEB開發,Django是Python WEB開發中比較成熟的一個框架,足以應對大型項目的壓力。mysql
Django是一款用Python語言設計的比較優秀的WEB開發框架。在安裝Django時,只須要在命令行下使用pip install django,並將django-admin.exe所在路徑添加到環境變量中便可。安裝完成後能夠在命令行下直接運行django-admin命令,若是顯示出一系列Django命令則表示Django的運行環境已經配置完成。以下圖所示。sql
接下來爲你們展現如何利用Django建立一個空白的站點項目。在根目錄下運行django-admin startproject ali便可在根目錄建立一個名爲ali的空白站點項目,在目錄下能夠看到一個空白站點的基本項目結構。一般一個網絡站點會同時包含許多小站點,好比阿里雲包含了雲棲社區、雲棲博客這樣的子站點。在Django中,這樣的子站點也稱爲APP。如何在一個站點下建立APP呢?首先,在命令行下進入站點項目。而後,使用python manage.py startapp home命令建立一個名爲home的子站。接下來爲你們介紹一會兒站的結構,進入子站的目錄,其中admin.py主要用於進行後臺的配置。models.py主要用於模型設置,模型設置主要和數據庫相關。views.py主要進行視圖設置,在Django中,視圖主要負責業務邏輯的處理,而前端頁面的設計則放在模板中。數據庫
Django是採用MVT的設計模式進行設計的。區別於MVC模式。MVC中,M指模型,V指視圖(主要負責前端頁面的處理),C指控制器(負責業務邏輯的處理),好比ThinkPHP採用的就是MVC架構。而在MVT架構中,M指模型,V指視圖(負責業務邏輯處理),T指模板(負責前端界面)。所以,在進行實際開發時,應在視圖中實現業務邏輯處理的程序,而前端應在模板中實現。django
博客站點案例的展現見視頻。
在進行一個站點開發前,首先須要明確站點的功能。其次,設計站點的數據存儲方式,即站點的模型。以後依次實現各個功能,並在實現過程當中對頁面進行設計。在設計過程當中須要一些前端的知識。初次接觸前端設計時,爲了快速完成前端設計,能夠利用一些前端框架。好比bootstrap,它提供了一個可視化佈局系統,能夠經過拖動組件的方式完成設計,並下載其前端源碼。其界面以下圖。編程
路由,指網站的網址結構,即訪問請求的分配。在Pycharm中打開站點項目。打開urls.py文件配置路由。首先,經過from home import views as home_views從home站點中導入視圖並起別名爲home_views。經過url(r’^admin/’, admin.site.urls)進行網址分配,第一個參數表明網址請求,第二個參數表明將訪問請求引入哪個視圖函數中。經過路由編寫能夠對網址的結構進行規劃。bootstrap
完成路由網址規劃後,須要設計整個網站的數據存儲結構,即數據模型。默認狀況下會使用sqlite做爲數據庫。若是須要將mysql配置爲數據庫,能夠在settings.py中修改DATABASES部分的代碼。以下圖。設計模式
此案例中將使用sqllite做爲數據庫。模型的設計通常是根據數據的存儲狀況來進行分析的。首先要分析該站點須要存儲什麼信息。在此案例中,須要存儲的信息包括用戶信息、文章信息、類別信息、評論信息。每一種信息均可以用一張表來存儲,並根據信息的屬性設計表的字段。在設計表字段時應儘可能考慮全面一些。本案例中的表設計以下圖。
在模型設計完成以後要將其轉化爲程序語言,模型的實現需在models.py中實現。每一張表都由一個python類實現,每一個字段至關因而類中的變量。具體實現詳見視頻。每一個字段須要有對應的存儲類型,最經常使用的類型有CharField用於存儲字符串,EmailField表明郵箱地址,IntegerField表明存儲整型數據,BooleanField表明存儲布爾型數據,TextField表明長文本類型。
模型設計完成以後再進行網站後臺的開發。開發完網站後臺後,才進入視圖編寫即功能實現環節。在Django目錄結構中,每個文件都有各自的分工。後臺開發須要在admin.py中完成。首先須要在admin.py中註冊以前設計的模型,即將模型綁定到後臺中,這樣就能夠在後臺中管理這些模型了。經過綁定,也提供了一個可視化的環境,避免了經過代碼來控制數據庫。接下里向你們講解如何在後臺中註冊模型。首先,從models中導入各個模型。接着,將須要在後臺中展示的信息利用list_display展現出來。以展示用戶信息爲例,list_display中不包含「passwd」,後臺就看不到用戶的密碼。最後利用admin.site.register將信息真正綁定到後臺,它有兩個參數,第一個參數表示須要綁定的模型,第二個參數表示須要展示的信息。這樣,後臺就註冊完畢了。
下一步,建立一個後臺帳號。因爲案例中使用了數據庫,因此在建立超級管理員以前要先同步數據庫,即利用python將模型同步成數據庫,進入terminal終端,經過python manage.py makemigrations和python manage.py migrate命令來實現。以後再使用命令python manage.py createsuperuser建立超級管理員,以下圖。以後就能夠運行站點並登錄後臺查看數據。
接下來說解視圖的編寫。視圖編寫是Django站點編寫的核心。通常來講,每個功能會以一個視圖函數的形式實現,視圖在views.py中編寫。接下來將爲你們一一介紹功能實現過程。第一,實現文章界面展現的功能。首先,須要獲取文章的ID,並在網址中給出。所以要在路由中進行規劃,並在article視圖函數中,將ID設爲參數。
而視圖函數要實現的功能就是要根據文章ID將文章查詢出來,就須要用到模型。最經常使用的查詢方式有如下兩種,第一種,好比Article.objects.filter(id=aid).values(「id」, 「title」, 「author」, 」content」)。filter表示進行信息篩選,values表示要取出的字段。第二種, Typemsg.objects.values(「id」,」typename」)不進行信息篩選,直接取出字段。另外你們應掌握經過模型寫入數據, Usermsg.objects.create(name=name, passwd=passwd, email = email)。在實現文章查找時,首先找到文章存儲在Article表格中。在視圖中導入Article模型,利用查詢命令過濾ID取出文章相關信息。而後,使用render()爲其分配一個模板。
接下來介紹模板的設計與編寫及其餘功能的完善。模板影響着界面的美觀程度。首先,要在settings.py中開啓TEMPLATES,在‘DIRS’中設置模板的路徑。全部須要的前端模板均可以放在該文件目錄下。好比,咱們利用render爲Article分配detail.html這個模板。進入detail.html進行編寫。前端設計中須要動態變化的部分放在{{…}}中,表示Django中的變量。好比,利用thisarticle.title獲取當前文章標題,thisarticle.author獲取當前文章做者,thisarticle.content獲取當前文章內容。值得注意的是{{thisarticle.content | safe}}經過safe源碼解析,不然將直接在網頁中展現HTML源碼。
註冊功能
在views.py中實現業務邏輯處理。首先觀察session.has_key,若查找到,說明用戶已登錄無需註冊,則直接重定向到根目錄。不然進行註冊,利用render爲其分配reg.html。在reg.html中完成表單設計,點擊提交後就將信息提交給當前頁面。當前頁面中,經過request.POST捕獲信息,隨後操做Usermsg模型,寫入數據庫。
登錄功能
首先,須要login.html模板,輸入姓名密碼並提交。在視圖中,首先判斷當前是否登錄,若已登錄則重定向到根目錄。不然返回登錄界面,捕獲登錄信息,在模型中經過filter查找該條用戶信息。若查到到該條記錄則登錄成功並在session中保存當前用戶名。不然登陸失敗。
登出功能
只需經過del將會話信息刪除便可。
首頁展示
首頁上動態變化的內容包括,博文和博文分類。在視圖中調用模型獲取博文分類和文章信息。而後進行切片運算。因爲在首頁上不可能徹底展現數據庫中的全部博文,所以要進行切片(經過[:20]取前二十個)。而後在模板中經過一個for循環遍歷博文類別進行展現。文章同理。詳細代碼見視頻。
博文列表頁,實現方式與首頁相似。只是不須要進行切片運算。
博文發佈
要求用戶登錄並有管理員權限。首先經過session.has_key 判斷是否登錄,若是沒登錄先跳轉到登錄頁面。若已登錄,則捕獲當前用戶信息並判斷是否有管理員權限。若不是管理員則重定向到首頁。如果管理員則展示文章發佈的模板postarticles.html。在模板中首先設計表單。其次博文類別須要以單選按鈕展現。在發佈文章時就須要用到富文本編輯器。這裏,用kindeditor做爲富文本編輯器。donfig.js中設置什麼時候打開富文本編輯器。案例中,咱們要求textarea[name=」content」]時調用。而後只須要在輸入文章內容處配置textarea將name字段設置爲content再經過POST提交到views中,寫入數據庫。代碼詳見視頻。
利用Django開發站點關鍵還在於多實踐。
阿里雲Python技術直播,但願能幫助你們入門。但願你們在學習過程當中也能學會自主解決問題好比查找資料。其次,項目導向是一種比較好的學習方式。能夠給本身設立一個項目目標,在期間進行不斷學習。前期輕理論重實戰,後期輕實戰重理論。
詳情請閱讀原文