Django中創(chuàng)建用戶與修改密碼方式
在 Django 中創(chuàng)建用戶有多種方式,具體取決于你是想通過 管理后臺、命令行 還是 代碼(視圖/API) 來實現(xiàn)。
以下是三種最常用的方法:
1. 使用命令行創(chuàng)建管理員 (Superuser)
如果你是剛開始開發(fā)項目,需要進(jìn)入 Django Admin 后臺,可以使用以下命令:
python manage.py createsuperuser
系統(tǒng)會提示你輸入:
- Username: 用戶名
- Email address: 郵箱
- Password: 密碼(輸入時不會顯示字符)
2. 在代碼中創(chuàng)建普通用戶
如果你是在編寫注冊功能或邏輯腳本,可以使用 Django 內(nèi)置的 User 模型。
推薦做法:使用 create_user 方法(它會自動處理密碼加密)。
from django.contrib.auth.models import User
# 創(chuàng)建用戶并保存到數(shù)據(jù)庫
user = User.objects.create_user(
username='myusername',
email='test@example.com',
password='mypassword123'
)
# 還可以設(shè)置其他屬性
user.first_name = 'John'
user.last_name = 'Doe'
user.save()
[!IMPORTANT]
注意: 千萬不要使用 User.objects.create() 來創(chuàng)建用戶,因為這樣會導(dǎo)致密碼以明文形式存入數(shù)據(jù)庫,用戶將無法登錄。
3. 使用 Django 管理后臺
這是最直觀的圖形化操作方式:
- 啟動服務(wù)器:
python manage.py runserver。 - 訪問
http://127.0.0.1:8000/admin。 - 使用管理員賬號登錄。
- 點(diǎn)擊 Users (用戶) 旁的 Add (+) 按鈕。
- 輸入用戶名和密碼即可。
核心 API 參考表
| 方法 | 適用場景 | 密碼處理 |
|---|---|---|
| create_user() | 標(biāo)準(zhǔn)注冊流程 | 自動加密 (Hash) |
| create_superuser() | 創(chuàng)建擁有所有權(quán)限的管理員 | 自動加密 (Hash) |
| User.objects.create() | 錯誤做法 | 明文存儲(極不安全) |
進(jìn)階建議:自定義用戶模型
如果你正在開發(fā)一個新項目,Django 官方強(qiáng)烈建議使用 自定義用戶模型 (Custom User Model)。這樣以后你想用“手機(jī)號”或“郵箱”代替“用戶名”登錄時,就不需要重構(gòu)整個數(shù)據(jù)庫了。
如果你忘記了 Django 管理員(Superuser)的密碼,或者需要重置某個用戶的密碼,可以根據(jù)你的權(quán)限等級選擇以下方法:
1. 使用命令行重置(最快捷)
如果你有服務(wù)器終端的訪問權(quán)限,這是最簡單的方法。Django 提供了一個專門的命令來更改密碼:
python manage.py changepassword <用戶名>
操作步驟:
- 運(yùn)行上述命令(例如:
python manage.py changepassword admin)。 - 按照提示輸入新密碼(輸入時字符不可見)。
- 確認(rèn)新密碼,完成后系統(tǒng)會提示
Password changed successfully。
2. 通過 Django Shell 重置(最靈活)
如果你不記得用戶名,或者需要批量操作,可以使用 Python 交互式環(huán)境:
python manage.py shell
在 Shell 中輸入以下代碼:
from django.contrib.auth.models import User
# 1. 查找用戶(如果你不記得名字,可以先 User.objects.all() 查看)
user = User.objects.get(username='your_username')
# 2. 設(shè)置新密碼
user.set_password('new_password123')
# 3. 必須保存!
user.save()
exit()
3. 如果連用戶名都忘了怎么辦?
如果你完全不記得有哪些超級管理員,可以先進(jìn)入 Shell 查看列表:
from django.contrib.auth.models import User
# 列出所有超級管理員的用戶名
User.objects.filter(is_superuser=True).values_list('username', flat=True)
4. 通過管理后臺 (Admin)
如果你已經(jīng)登錄了另一個具有“更改用戶”權(quán)限的賬號:
- 進(jìn)入
/admin/auth/user/。 - 點(diǎn)擊對應(yīng)的用戶名。
- 在密碼字段附近,通常會有一個**“該表單不包含密碼。你可以在此修改密碼”**的鏈接。
- 點(diǎn)擊鏈接進(jìn)入專用修改頁面。
常見問題提示
- Hash 加密: 永遠(yuǎn)不要直接在數(shù)據(jù)庫(如 SQLite 或 MySQL 客戶端)中手動修改密碼字段,因為 Django 存儲的是經(jīng)過 PBKDF2 算法加密的 Hash 值,直接輸入明文會導(dǎo)致無法登錄。
- Session 失效: 修改密碼后,該用戶在其他設(shè)備上的登錄狀態(tài)會失效(Session 會更新)。
如果你正在使用自定義的用戶模型(Custom User Model),導(dǎo)入方式可能略有不同。需要我演示如何獲取自定義模型嗎?
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python+pandas數(shù)據(jù)分析實踐總結(jié)
這篇文章主要介紹了Python+pandas數(shù)據(jù)分析實踐總結(jié)的相關(guān)資料,需要的朋友可以參考下2023-07-07
Python 根據(jù)數(shù)據(jù)模板創(chuàng)建shapefile的實現(xiàn)
今天小編就為大家分享一篇Python 根據(jù)數(shù)據(jù)模板創(chuàng)建shapefile的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
numpy中幾種隨機(jī)數(shù)生成函數(shù)的用法
numpy是Python中常用的科學(xué)計算庫,其中也包含了一些隨機(jī)數(shù)生成函數(shù),本文主要介紹了numpy中幾種隨機(jī)數(shù)生成函數(shù)的用法,具有一定的參考價值,感興趣的可以了解一下2023-11-11
python引用(import)某個模塊提示沒找到對應(yīng)模塊的解決方法
今天小編就為大家分享一篇python引用(import)某個模塊提示沒找到對應(yīng)模塊的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
使用Python進(jìn)行自動化數(shù)據(jù)爬取與存儲
在當(dāng)今數(shù)據(jù)驅(qū)動的時代,從互聯(lián)網(wǎng)上獲取有價值的信息變得尤為重要,Python,作為一種功能強(qiáng)大且易于學(xué)習(xí)的編程語言,在數(shù)據(jù)爬取領(lǐng)域有著廣泛的應(yīng)用,本文將介紹如何使用Python進(jìn)行自動化數(shù)據(jù)爬取與存儲,需要的朋友可以參考下2025-02-02

