Django(part48)--用户认证系统
生活随笔
收集整理的這篇文章主要介紹了
Django(part48)--用户认证系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習筆記,僅供參考
文章目錄
- 用戶認證系統
- User模型類
- auth基本模型操作
- 創建用戶
- 刪除用戶
- 修改密碼
- 檢查密碼是否正確
用戶認證系統
Django自帶一個用戶認證系統,它處理用戶賬號、組、權限以及基于cookie的用戶會話。
-
作用
-
添加普通用戶和超級用戶
-
修改密碼
-
登陸和退出管理
-
查看已登陸用戶
-
User模型類
- auth應用
現在,我們看一下mybookstore數據庫下的數據表:
mysql> show tables; +----------------------------+ | Tables_in_mybookstore | +----------------------------+ | auth_group | | auth_group_permissions | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | bookstore_book | | django_admin_log | | django_content_type | | django_migrations | | django_session | | userinfo_user | +----------------------------+ 12 rows in set (0.00 sec)我們知道Django對這些數據表的命名規則為應用名_類名,由上面的輸出結果,我們發現前6個數據表都是以auth為開頭的,這是因為Django自動的給我們創建了一個應用auth,這是一個用戶驗證的APP,在它的models.py模塊中有一個User模型類,我們可以導入該類,幫助我們完成用戶驗證的工作。
- User模型類的導入
- User對象的基本屬性
| username | 用戶名 | 是 |
| password | 密碼 | 是 |
| 郵箱 | 可選 | |
| first_name | 名 | 可選 |
| last_name | 姓 | 可選 |
| is_superuser | 是否是管理員(超級用戶)帳號(/admin) | 可選 |
| is_staff | 是否可以訪問admin管理界面 | 可選 |
| is_active | 是否是活躍用戶,默認True。 服務器端一般不會輕易刪除用戶,而是將用戶的is_active設為False,這樣用戶將處于不可用狀態。 | 可選 |
| last_login | 上一次的登錄時間 | 可選 |
| date_joined | 用戶創建的時間 | 可選 |
還記得我們在學習admin后臺數據庫管理時的一條創建管理員帳號的命令么:
python manage.py createsuperuser這條命令其實就相當于創建了一個User對象,即在mysql的auth_user數據表中添加了一條用戶記錄.
- 數據庫的表現形式
現在,我們看一下mysql中的auth_user數據表:
mysql> desc auth_user; +--------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | password | varchar(128) | NO | | NULL | | | last_login | datetime(6) | YES | | NULL | | | is_superuser | tinyint(1) | NO | | NULL | | | username | varchar(150) | NO | UNI | NULL | | | first_name | varchar(30) | NO | | NULL | | | last_name | varchar(150) | NO | | NULL | | | email | varchar(254) | NO | | NULL | | | is_staff | tinyint(1) | NO | | NULL | | | is_active | tinyint(1) | NO | | NULL | | | date_joined | datetime(6) | NO | | NULL | | +--------------+--------------+------+-----+---------+----------------+ 11 rows in set (0.02 sec)可以看到id為11位的整形,password最多可以存儲128個字符,username最多可以存儲150個字符等等…
auth基本模型操作
創建用戶
- 創建普通用戶create_user
- 創建超級用戶create_superuser
刪除用戶
from django.contrib.auth import models try:user = models.User.objects.get(username='用戶名')user.is_active = False #使當前用戶無效user.save()print("刪除普通用戶成功!") except:print("刪除普通用戶失敗")
修改密碼
from django.contrib.auth import models try:user = models.User.objects.get(username='用戶名')user.set_password('新密碼')#Django會利用set_password方法對新密碼進行加密#所以,我們不能用user.password的方法修改密碼user.save()return HttpResponse("修改密碼成功!") except:return HttpResponse("修改密碼失敗!")
檢查密碼是否正確
from django.contrib.auth import models try:user = models.User.objects.get(username='用戶名')if user.check_password('輸入的密碼'): #成功返回True,失敗返回False#Django會先對輸入的密碼進行加密#然后再對保存在數據庫中的加密后密碼進行比較return HttpResponse("密碼正確")else:return HttpResponse("密碼錯誤") except:return HttpResponse("沒有此用戶!")
總結
以上是生活随笔為你收集整理的Django(part48)--用户认证系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django(part47)--文件上传
- 下一篇: 原生家庭对个人成长及性格的影响