Python Django進階教程(五)(session,Django使用者認證)

HuangZhang_123發表於2017-05-23

Django版本:1.11
作業系統:Windows
Python:3.5
歡迎加入學習交流QQ群:657341423


session(會話),Django使用者認證。
每個網站都cookies,會話,使用者登入這些基本功能,這也是不能缺乏的功能。
現在大部分網站來說,基本上都是用session的多,原因無非就是安全性比cookies的高。
這裡就側重講解session用法。cookies可自行網上找資料。

本文說的session(會話)和Django使用者認證,簡單來說,兩者都是屬於使用者管理的部分。如果在實際開發中,要自行建立使用者模組的,那麼 session就會用到,如果直接使用django的使用者認證模組,那麼很多現有功能都是可以直接使用的。


session做一個簡單登入功能。
先看urls.py
這裡寫圖片描述

Form.py。這個可以根據實際使用,也可不用。
這裡寫圖片描述

models.py
這裡用之前的章節的資料庫,name作為username,address作為password。
這裡寫圖片描述

login.html
這裡寫圖片描述

index.html
這裡寫圖片描述

最後看views.py
這裡定義三個def,分別login,index和logout。
先看import
這裡寫圖片描述

login
這裡寫圖片描述

index和logout
這裡寫圖片描述

設計思路:
如果輸入/index/的url,會根據session檢查是否已存在,如果沒有的話,會跳到登入介面。
登入介面,會根據使用者輸入的帳號密碼,從資料庫的資料匹配,符合的話跳到index,否則會停留在login介面。

擴充套件思路:
如果在平常的網站開發過程中,會有很多網頁需要進行使用者驗證登入才能訪問該網址的時候,我們可以在views.py裡面的def使用裝飾器進行登入驗證。

在上述例子中,進行擴充。
其餘部分不變,在views.py裡面新增一個裝飾器。
程式碼如下:
這裡寫圖片描述
這部分程式碼與index的def很相似。

再看def index
這裡寫圖片描述

同樣,logout也可以這樣設定
這裡寫圖片描述

這樣就可以實現允許登陸的使用者訪問。

session一些小設定:
如果做到關閉網頁,自動退出使用者登入,或者網頁停止訪問後,使用者自動退出,可以在setting.py設定這個
這裡寫圖片描述


Django使用者認證
Django使用者認證功能基本上可以滿足大部分網站的需求的。
我們用Django使用者認證功能實現上述功能。
先看urls.py
為了區別,對上面的程式碼做了部分修改
這裡寫圖片描述

Form.py新增一個類,這個主要用於後面新增使用者的。
這裡寫圖片描述

views.py
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡用到django的auth的login和logout,所以上述定義的logout和login要修改,不然會衝突。

說明:這裡都是用表單生成html,然後用django的auth,上述用的是自定義的資料庫。兩者都是同一個models,只是對應不同的資料表,而且認證系統會有現成的方法,例如只允許登陸的使用者訪問。

擴充:
使用者新增,通常網站都有新使用者註冊的功能的,如果用到django的認證系統。那麼新增使用者教程如下:
Form.py可以看上述的截圖。
urls.py是url(r'^adduser/$', views.adduser),
這裡寫圖片描述
其實用到from django.contrib.auth.models import User 這個即可。這也不是很複雜的問題。

修改密碼:
這裡寫圖片描述


總結:總的來說,使用者管理,使用者登入這模組功能,可以根據實際需求進行自定義開發或者使用django的即可。兩者區別就是,用得資料表不一樣,django的會有比較齊全的方法可以直接使用。


進階教程程式碼:請點選

相關文章