161.內置User模型的基本使用

User模型

user模型是這個框架的核心部分,他的完整路徑是在django.contrib.auth.models.User。對User對象作一個簡單的瞭解。

字段:

內置的User模型有如下字段:
(1)username:用戶名,150字符之內,能夠包含數字和英文字符,以及_ 、@、+、.和-字符。不能爲空,而且必須惟一,因此django在斷定是不是正確的用戶時,能夠經過這個惟一性字段進行判斷。
(2)first_name:孤煙逐雲的first_name,在150字符以內,能夠爲空。
(3)last_name:孤煙逐雲的last_name,在150字符之內,能夠爲空。
(4)email:郵箱,能夠爲空。
(5)password:密碼。通過哈希函數的處理以後的密碼。不可逆,具備必定的安全性。
(6)groups:分組,一個用戶能夠擁有多個分組,一個分組也能夠擁有多個用戶,groups這個字段是跟Group的一個多對多的關係。
(7)user_permissions:權限。一個用戶能夠擁有多個權限,一個權限能夠被多個用戶所擁有,和Permission屬於一種多對多的關係。
(8)is_staff:是不是員工,是否能夠進入admin的站點,默認狀況下爲否。
(9)is_active: 這個用戶帳號是否可用,對於一些想要刪除帳號的數據,咱們設置爲這個值爲False,而不是在數據庫中進行真正的刪除。
(10)is_superuser:是不是超級管理員。若是是超級管理員,那麼擁有整個網站的全部權限。
(11)last_login:上次登陸的時間。
(12)date_joined:帳號建立的時間。

User模型的基本使用

建立用戶

經過create_user()方法能夠快速的建立用戶,這個方法至少要傳遞username, email,password,示例代碼以下:
from django.shortcuts import render
from django.contrib.auth.models import User

def index(request):
    <!--使用User模型上的create_user()方法建立對象-->
    <!--須要注意的是,在使用這個方法,建立對象的時候至少要傳遞三個字段username,email,password的值-->
    User.objects.create_user(username='孤煙逐雲', email='333333@qq.com', password='.comhello')
    return render(request, 'index.html')
須要注意的是,在使用Django內置的User模型以前,必定要將模型生成的腳本文件映射到數據庫中,即在終端命令行中進入咱們的項目所在的環境,執行python manage.py migrate,這樣就能夠將咱們的腳本文件映射到數據庫中了,就會在數據庫中生成咱們的user表,以後就可使用django內置的user模型向數據庫中添加用戶了。在咱們的urls.py中進行一層視圖函數和url之間的映射,示例代碼以下:
(1)子url與視圖函數之間的映射:
front urls.py
from django.urls import path
from . import views

app_name = 'front'

urlpatterns = [
    path('', views.index, name='index'),
]
(2)父url與子url之間的映射
from django.urls import path,include

urlpatterns = [
    path('', include("front.urls")),
]

==這樣就能夠運行咱們的項目了,成功運行以後,查看咱們的數據庫表auth_user中是否含有咱們剛纔建立的用戶,password字段是通過加密存儲的,而且在沒有設置is_superuser的狀況下,默認爲0,即便用create_user()方法建立的用戶並非超級用戶,只是一個普通的用戶。而且is_staff字段爲0(非員工,不能登陸admin管理系統),is_actve爲1(帳號處於激活狀態)。==html

建立一個超級用戶:

建立一個超級用戶有兩種方式,第一種是使用代碼的方式,用代碼建立超級用戶跟建立普通用戶很是相似,只不過是使用create_superuser, 示例代碼以下:
def index(request):
    User.objects.create_superuser(username='雲中雲', email='111111@qq.com', password='111111')
    return render(request, 'index.html')

==查看數據庫中該用戶的各字段的值,is_superuser爲1,爲超級管理員;is_staff爲1,爲員工,能夠登陸admin管理系統;is_active爲1,該帳號處於可用狀態。==python

也能夠經過命令行的方式,命令以下:
python manage.py createsuperuser
以後就會提示你輸入用戶名,郵箱和密碼。

修改密碼:

由於密碼是經過加密以後才能存儲進去的,因此若是想要使用修改密碼,不能直接修改須要調用set_password來達到修改密碼的目的,示例代碼以下:
def index(request):
    user = User.objects.get(pk=1)
    if user:
        user.set_password('111111')
        user.save()
        return HttpResponse('success!')
    else:
        return render(request, 'index.html')

登陸驗證

Django的驗證系統已經幫咱們實現了登陸驗證的功能,經過django.contrib.auth.authenticate能夠實現,這個方法只能經過username和password來驗證。示例代碼以下:
# 3.登陸驗證
def index(request):
    username = '孤煙逐雲'
    password = '111111'
    user = authenticate(request, username=username, password=password)
    # 這個方法若是驗證用戶存在,就會返回一個user對象,若是沒有驗證成功,就會返回None
    if user:
        contenxt = {
            'username': user.username,
        }
        return render(request, 'index.html', context=contenxt)
    else:
        contenxt = {
            'username': '該用戶不存在!',
        }
        return render(request, 'index.html', context=contenxt)
在index.html中接收view中傳來的上下文。
<ul>
    <li>{{ username }}</li>
</ul>
相關文章
相關標籤/搜索