Python Day77 auth and User

  在介紹此章節的內容時,咱們須要引用到以下兩個模塊: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
相關文章
相關標籤/搜索