python开发一个自己的技术网站_手把手教你写网站:Python WEB开发技术实战
摘要:本文詳細介紹了Python WEB開發(fā)的基礎入門。以一個博客站點的開發(fā)為例講解了基于Django框架開發(fā)WEB站點的全過程。通過本文的學習可以快速掌握基于Django的Python WEB的開發(fā)方法,進行WEB站點的實踐開發(fā)。
數十款阿里云產品限時折扣中,趕緊點擊這里,領劵開始云上實踐吧!
演講嘉賓簡介:
韋瑋,企業(yè)家,資深IT領域專家/講師/作家,暢銷書《精通Python網絡爬蟲》作者,阿里云社區(qū)技術專家。
本次直播視頻精彩回顧,戳這里!
本節(jié)課代碼及講義下載,戳這里!
本次的分享主要圍繞以下幾個方面:
Python WEB開發(fā)技術簡介
Django簡介與環(huán)境配置與MVT設計模式簡介
開發(fā)一個博客站點項目思路
路由編寫與模型設計實戰(zhàn)
快速開發(fā)一個網站后臺與試圖編寫實戰(zhàn)
模板設計與編寫以及完善博客站點的其他功能
后續(xù)的話
一、Python WEB開發(fā)技術簡介
WEB開發(fā)技術主要用于進行網站開發(fā),大家可以使用Python進行網站的開發(fā)。進行網站開發(fā)最常用的語言是PHP,但Python作為一門比較通用的編程語言,它在WEB開發(fā)領域同樣是比較適合的。在本文中將會向大家介紹如何使用Python進行WEB開發(fā)。在使用Python進行WEB開發(fā)時,可以使用不同的框架比如Django、Flask等,當然也可以不基于任何框架直接使用CGI編程進行站點開發(fā)。本文將與大家分享如何使用Django來進行WEB開發(fā),Django是Python WEB開發(fā)中比較成熟的一個框架,足以應對大型項目的壓力。
二、Django簡介與環(huán)境配置與MVT設計模式簡介
Django是一款用Python語言設計的比較優(yōu)秀的WEB開發(fā)框架。在安裝Django時,只需要在命令行下使用pip install django,并將django-admin.exe所在路徑添加到環(huán)境變量中即可。安裝完成后可以在命令行下直接運行django-admin命令,如果顯示出一系列Django命令則表示Django的運行環(huán)境已經配置完成。如下圖所示。
接下來為大家展示如何利用Django創(chuàng)建一個空白的站點項目。在根目錄下運行django-admin startproject ali即可在根目錄創(chuàng)建一個名為ali的空白站點項目,在目錄下可以看到一個空白站點的基本項目結構。通常一個網絡站點會同時包含許多小站點,比如阿里云包含了云棲社區(qū)、云棲博客這樣的子站點。在Django中,這樣的子站點也稱為APP。如何在一個站點下創(chuàng)建APP呢?首先,在命令行下進入站點項目。然后,使用python manage.py startapp home命令創(chuàng)建一個名為home的子站。接下來為大家介紹一下子站的結構,進入子站的目錄,其中admin.py主要用于進行后臺的配置。models.py主要用于模型設置,模型設置主要和數據庫相關。views.py主要進行視圖設置,在Django中,視圖主要負責業(yè)務邏輯的處理,而前端頁面的設計則放在模板中。
Django是采用MVT的設計模式進行設計的。區(qū)別于MVC模式。MVC中,M指模型,V指視圖(主要負責前端頁面的處理),C指控制器(負責業(yè)務邏輯的處理),比如ThinkPHP采用的就是MVC架構。而在MVT架構中,M指模型,V指視圖(負責業(yè)務邏輯處理),T指模板(負責前端界面)。因此,在進行實際開發(fā)時,應在視圖中實現業(yè)務邏輯處理的程序,而前端應在模板中實現。
三、開發(fā)一個博客站點項目思路
博客站點案例的展示見視頻。
在進行一個站點開發(fā)前,首先需要明確站點的功能。其次,設計站點的數據存儲方式,即站點的模型。之后依次實現各個功能,并在實現過程中對頁面進行設計。在設計過程中需要一些前端的知識。初次接觸前端設計時,為了快速完成前端設計,可以利用一些前端框架。比如bootstrap,它提供了一個可視化布局系統(tǒng),可以通過拖動組件的方式完成設計,并下載其前端源碼。其界面如下圖。
四、路由編寫與模型設計實戰(zhàn)
路由,指網站的網址結構,即訪問請求的分配。在Pycharm中打開站點項目。打開urls.py文件配置路由。首先,通過from home import views as home_views從home站點中導入視圖并起別名為home_views。通過url(r’^admin/’, admin.site.urls)進行網址分配,第一個參數代表網址請求,第二個參數代表將訪問請求引入哪一個視圖函數中。通過路由編寫可以對網址的結構進行規(guī)劃。
完成路由網址規(guī)劃后,需要設計整個網站的數據存儲結構,即數據模型。默認情況下會使用sqlite作為數據庫。如果需要將mysql配置為數據庫,可以在settings.py中修改DATABASES部分的代碼。如下圖。
此案例中將使用sqllite作為數據庫。模型的設計一般是根據數據的存儲情況來進行分析的。首先要分析該站點需要存儲什么信息。在此案例中,需要存儲的信息包括用戶信息、文章信息、類別信息、評論信息。每一種信息都可以用一張表來存儲,并根據信息的屬性設計表的字段。在設計表字段時應盡量考慮全面一些。本案例中的表設計如下圖。
在模型設計完成之后要將其轉化為程序語言,模型的實現需在models.py中實現。每一張表都由一個python類實現,每個字段相當于是類中的變量。具體實現詳見視頻。每個字段需要有對應的存儲類型,最常用的類型有CharField用于存儲字符串,EmailField代表郵箱地址,IntegerField代表存儲整型數據,BooleanField代表存儲布爾型數據,TextField代表長文本類型。
五、快速開發(fā)一個網站后臺與視圖編寫實戰(zhàn)
模型設計完成之后再進行網站后臺的開發(fā)。開發(fā)完網站后臺后,才進入視圖編寫即功能實現環(huán)節(jié)。在Django目錄結構中,每一個文件都有各自的分工。后臺開發(fā)需要在admin.py中完成。首先需要在admin.py中注冊之前設計的模型,即將模型綁定到后臺中,這樣就可以在后臺中管理這些模型了。通過綁定,也提供了一個可視化的環(huán)境,避免了通過代碼來控制數據庫。接下里向大家講解如何在后臺中注冊模型。首先,從models中導入各個模型。接著,將需要在后臺中展現的信息利用list_display展示出來。以展現用戶信息為例,list_display中不包含“passwd”,后臺就看不到用戶的密碼。最后利用admin.site.register將信息真正綁定到后臺,它有兩個參數,第一個參數表示需要綁定的模型,第二個參數表示需要展現的信息。這樣,后臺就注冊完畢了。
下一步,創(chuàng)建一個后臺賬號。由于案例中使用了數據庫,所以在創(chuàng)建超級管理員之前要先同步數據庫,即利用python將模型同步成數據庫,進入terminal終端,通過python manage.py makemigrations和python manage.py migrate命令來實現。之后再使用命令python manage.py createsuperuser創(chuàng)建超級管理員,如下圖。之后就可以運行站點并登陸后臺查看數據。
接下來講解視圖的編寫。視圖編寫是Django站點編寫的核心。一般來說,每一個功能會以一個視圖函數的形式實現,視圖在views.py中編寫。接下來將為大家一一介紹功能實現過程。第一,實現文章界面展示的功能。首先,需要獲取文章的ID,并在網址中給出。因此要在路由中進行規(guī)劃,并在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進行編寫。前端設計中需要動態(tài)變化的部分放在{{…}}中,表示Django中的變量。比如,利用thisarticle.title獲取當前文章標題,thisarticle.author獲取當前文章作者,thisarticle.content獲取當前文章內容。值得注意的是{{thisarticle.content | safe}}通過safe源碼解析,否則將直接在網頁中展示HTML源碼。
注冊功能
在views.py中實現業(yè)務邏輯處理。首先觀察session.has_key,若查找到,說明用戶已登陸無需注冊,則直接重定向到根目錄。否則進行注冊,利用render為其分配reg.html。在reg.html中完成表單設計,點擊提交后就將信息提交給當前頁面。當前頁面中,通過request.POST捕獲信息,隨后操作Usermsg模型,寫入數據庫。
登陸功能
首先,需要login.html模板,輸入姓名密碼并提交。在視圖中,首先判斷當前是否登陸,若已登陸則重定向到根目錄。否則返回登陸界面,捕獲登陸信息,在模型中通過filter查找該條用戶信息。若查到到該條記錄則登陸成功并在session中保存當前用戶名。否則登錄失敗。
登出功能
只需通過del將會話信息刪除即可。
首頁展現
首頁上動態(tài)變化的內容包括,博文和博文分類。在視圖中調用模型獲取博文分類和文章信息。然后進行切片運算。由于在首頁上不可能完全展示數據庫中的所有博文,因此要進行切片(通過[:20]取前二十個)。然后在模板中通過一個for循環(huán)遍歷博文類別進行展示。文章同理。詳細代碼見視頻。
博文列表頁,實現方式與首頁類似。只是不需要進行切片運算。
博文發(fā)布
要求用戶登陸并有管理員權限。首先通過session.has_key 判斷是否登陸,如果沒登陸先跳轉到登陸頁面。若已登陸,則捕獲當前用戶信息并判斷是否有管理員權限。若不是管理員則重定向到首頁。若是管理員則展現文章發(fā)布的模板postarticles.html。在模板中首先設計表單。其次博文類別需要以單選按鈕展示。在發(fā)布文章時就需要用到富文本編輯器。這里,用kindeditor作為富文本編輯器。donfig.js中設置何時打開富文本編輯器。案例中,我們要求textarea[name=”content”]時調用。然后只需要在輸入文章內容處配置textarea將name字段設置為content再通過POST提交到views中,寫入數據庫。代碼詳見視頻。
利用Django開發(fā)站點關鍵還在于多實踐。
七、后續(xù)的話
阿里云Python技術直播,希望能幫助大家入門。希望大家在學習過程中也能學會自主解決問題比如查找資料。其次,項目導向是一種比較好的學習方式。可以給自己設立一個項目目標,在期間進行不斷學習。前期輕理論重實戰(zhàn),后期輕實戰(zhàn)重理論。
詳情請閱讀原文
總結
以上是生活随笔為你收集整理的python开发一个自己的技术网站_手把手教你写网站:Python WEB开发技术实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql计算留存_SQL基础第七讲:关于用
- 下一篇: python递归函数查询表_python