Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

Python 程序員 編程語言 HTML sun菜菜 sun菜菜 2017-11-01

接下來正式進入網站的功能開發。要完成後臺管理系統登錄功能,通過查看登錄頁面,我們可以瞭解到,我們需要編寫驗證碼圖片獲取接口和登錄處理接口,然後在登錄頁面的HTML上編寫AJAX。在給大家分享之前呢,小編推薦一下一個挺不錯的交流寶地,裡面都是一群熱愛並在學習Python的小夥伴們,大幾千了吧,各種各樣的人群都有,特別喜歡看到這種大家一起交流解決難題的氛圍,群資料也上傳了好多,各種大牛解決小白的問題,這個Python群:330637182 歡迎大家進來一起交流討論,一起進步,儘早掌握這門Python語言

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

在進行接口開發之前,還有一個重要的事情要處理,那就是對站點進行初始化,如果不進行初始化,那麼獨立文件編寫的接口將會找不到,要將異常錯誤寫入日誌文件也會找不到路徑,下面先上代碼。

打開main.py文件,改為下面代碼(大家可以比較一下和之前代碼有什麼不同)

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

main.py文件裡有詳細的註釋說明,所以不進行細說,在這裡講一講文件大體的思路。

因為我們編寫的接口文件都放在api文件夾中,當web服務啟動後需要將api裡的接口文件自動裝載進來,讓我們可以通過url訪問裡面的接口,所以需要在main.py這個入口函數中,對api文件夾裡的接口文件進行導入,前面講解到我們api文件夾裡有一個__init__.py文件,它會自動幫我們導入當前文件夾裡的所有文件,所以我們只需要在main.py中添加 import api 這一行代碼就可以了。

另外,我們需要告訴python服務當前程序所在的路徑,所以需要將當前文件所在的絕對路徑添加到python環境變量中(第21到23行)

我們要記錄異常信息到日誌,要記錄客戶端訪問的url與提交的請求參數,方便出錯時幫助我們進行排查錯誤,所以要初始化日誌文件格式與存儲路徑(第30到39行)

bottle框架有兩個好用的勾子處理函數(具體流程如下圖),客戶端訪問接口時,首先會從bottle web服務綁定的入口進入,然後調用 before_request 這個勾子函數(第50到97行),執行完裡面的代碼後再進入對應的接口函數裡,當接口函數運行完畢後,又會調用 after_request 這個勾子函數(我們使用了nginx處理前端訪問服務不存在跨域問題,所以main.py就沒有添加這個勾子函數),運行完裡面的代碼後才返回最終結果給客戶端。所以我們有很多事情可以放在這兩個勾子函數中進行處理。 before_request 中我們可以運行初始化操作、記錄客戶端訪問的url與提交的請求參數操作、判斷用戶是否已經登錄等操作(如果沒有這個勾子函數,我們要判斷用戶是否登錄,就必須在每個接口文件中處理,這樣一方面代碼會很冗餘,出現大量重複的沒有必要的代碼,另一方面也很容易出錯或遺漏掉,造成後端權限訪問漏洞。而 after_request 這個函數通過是用來處理輸出HTTP頭信息等內容,比如跨域處理等。

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

第55到78行,會將客戶端訪問的url與各種方式提交的請求參數記錄到日誌。對於一些不想記錄到日誌的訪問,可以添加到第57行。(如下圖)

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

第90到96行,對登錄用戶訪問進行處理,如果未登錄的,則會返回-404狀態,客戶端的ajax接收到這個狀態後,自行處理跳轉到登錄頁面。

驗證碼接口

我們在api文件夾中創建verify.py文件

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

code_img, verify_code = verify_helper.create_verify_code() :運行verify_helper.create_verify_code() ,會返回圖片流和驗證碼,python語言執行函數後,可以直接返回字符串、數值、元組、字典、列表等各種類型的值,返回元組類型值時,就可以使用這樣的方式進行接收。

log_helper.error(str(e.args)) 這是我們前面工具函數包時所講到的錯誤記錄函數,當生成驗證碼出現異常時,它會將異常信息記錄到日誌文件中,並將異常發送到我們指定的郵箱。

添加完這個文件後,我們就可以運行一下main.py,然後在瀏覽器中輸入 //127.0.0.1:9090/api/verify/ 或 //127.0.0.1:81/api/verify/ ,就可以看到生成的驗證碼了

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

登錄接口

我們在api文件夾中創建login.py文件

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

在編寫登錄接口前,我們首先要了解登錄接口處理的流程是怎麼樣的

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

login.py後臺登錄處理接口代碼可以看到,路由我們使用的是 @put('/api/login/') ,RESTful風格中,post是用於新增記錄,put是用於修改或改變服務器數據,登錄我理解它肯定不是新增,它是改變用戶登錄的狀態,所以這裡使用put方式接收

登錄接口的代碼有詳細的註釋,還有上面的流程圖,所以就不再深入解說,大家自己看代碼,如有不明白的,文章後面留言。

前端登錄html頁面(login.html)

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

對前面下載的login.html頁面進行了微調,添加了請求的AJAX代碼。

由於火狐和谷歌運行AJAX不支持PUT、DELETE等提交方式,所以AJAX提交時type類型還是POST方式,在提交參數項裡面,需要增加 _method 這個參數,值為put。(由於本系列使用的是RESTful風格,所以雖然有點麻煩,但不影響我們的使用)

html和js我也不進行詳細說明,大家自己看代碼吧,如果大家都要求需要對js寫註釋的,我到時再添加註釋進去。

相關頁面功能都完成了,接下來就是進行運行調試

在瀏覽器中輸入://127.0.0.1:81/login.html 然後輸入賬號:admin,密碼:123456,還有驗證碼

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

點擊登錄,能正常跳轉到//127.0.0.1:81/main.html 頁面,就表示登錄接口能正常使用了。

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

大家想要熟悉登錄接口代碼的運行,最好使用debug運行跟蹤一下,看看每一行代碼是怎麼運行的,就清楚了。當然如果想要加深理解,最佳方式是照著代碼手打一次,每完成幾行就debug運行一下,看看執行效果。

Python Web開發神級程序員通過十分鐘帶你後臺管理系統登錄!強

如有侵權請聯繫小編刪除!

相關推薦

推薦中...