在介紹此章節的內容時,咱們須要引用到以下兩個模塊:html
from django.contrib.auth.models import User from django.contrib import auth
1、User表介紹 python
其中User爲django框架爲咱們提供用於存儲登陸用戶和密碼等信息的用戶表,在咱們使用此django認證系統時,必須使用此表,不能夠另外建立用戶表,且表中的內容不能夠直接在表中添加,由於其存儲密碼爲加密的的字符串。其中username和password字段是必須存入內容的字段。User表格添加數據兩種方式以下:shell
一、方式一:數據庫
經過以下命令添加超級用戶信息:python manage.py createsuperuser,而後按照步驟設置用戶信息,其中username和password字段是必須存入內容的字段。django
二、方式二:session
經過create_user()或者create_superuser()(與上述建立超級用戶效果同樣)方法添加用戶信息,以下注冊用戶函數的應用實例:app
def register(request): if request.method=="POST": username=request.POST.get("username") userpswd1=request.POST.get("userpswd1") userpswd2=request.POST.get("userpswd2") if userpswd1==userpswd2: User.objects.create_user(username=username,password=userpswd1) #username和password爲User表的關鍵字段 return redirect("/login/")
2、author模塊方法框架
一、authenticate()函數
提供了用戶認證,即驗證用戶名以及密碼是否正確,通常須要username password兩個關鍵字參數,若是認證信息有效,會返回一個 user 對象。具體使用見以下登陸函數實例:加密
def login(request): if request.method=="POST": username=request.POST.get("username") userpswd=request.POST.get("userpswd") user=auth.authenticate(username=username,password=userpswd) if user: auth.login(request,user) # 至關於request.session["user"]=user.username return redirect("/booklist/") return render(request,"login.html")
二、login(HttpRequest, user)
該函數接受一個HttpRequest對象,以及一個認證了的user對象,此函數使用django的session框架給某個已認證的用戶附加上session id等信息。即上述登陸實例中設置session用法。
三、logout(request)
該函數接受一個HttpRequest對象,無返回值。當調用該函數時,當前請求的session信息會所有清除。該用戶即便沒有登陸,使用該函數也不會報錯。以下注銷當前登陸用戶的session實例:
def login_out(request): auth.logout(request) # 清除當前登陸用戶的session,至關於request.session.flush() return redirect("/login/")
3、user對象方法
一、is_authenticated()
返回值爲bool值,主要用於判斷user對象是否完成登陸驗證,如用在要求用戶登陸之後才能訪問某些網址,不然跳轉到登陸頁面完成登陸。見以下頁面函數訪問前的驗證明例:
def booklist(request): user=request.user #顯示當前登陸用戶對象 if not user.is_authenticated(): return redirect("/login/") book_obj=Book.objects.all() return render(request,"booklist.html",{"book_obj":book_obj})
二、set_password()
使用 set_password() 來修改密碼,見以下修改密碼函數實例:
def modify(request): if request.method=="POST": username=request.POST.get("username") pre_userpswd=request.POST.get("pre_userpswd") new_userpswd=request.POST.get("new_userpswd") user=auth.authenticate(username=username,password=pre_userpswd) if user: user.set_password(new_userpswd) user.save() return redirect("/login/")
4、django經常使用命令
在django框架中經常使用的命令總結以下,注如下命令是在終端執行:
# 查看django版本 python -m django --version # 建立項目,名爲mysite django-admin startproject mysite # Django項目環境終端 python manage.py shell # 建立應用程序,確保和 manage.py 是同一目錄 python manage.py startapp app01 # 啓動django python manage.py runserver python manage.py runserver 8080 python manage.py runserver 0.0.0.0:8000 # 數據庫遷移 python manage.py makemigrations python manage.py migrate # 同步數據庫 python manage.py syncdb # 清空數據庫(保留空表) python manage.py flush # 認證User表建立超級用戶 python manage.py createsuperuser # 修改用戶密碼 python manage.py changepassword username