Django中創(chuàng)建用戶與修改密碼方式
在 Django 中創(chuàng)建用戶有多種方式,具體取決于你是想通過(guò) 管理后臺(tái)、命令行 還是 代碼(視圖/API) 來(lái)實(shí)現(xiàn)。
以下是三種最常用的方法:
1. 使用命令行創(chuàng)建管理員 (Superuser)
如果你是剛開始開發(fā)項(xiàng)目,需要進(jìn)入 Django Admin 后臺(tái),可以使用以下命令:
python manage.py createsuperuser
系統(tǒng)會(huì)提示你輸入:
- Username: 用戶名
- Email address: 郵箱
- Password: 密碼(輸入時(shí)不會(huì)顯示字符)
2. 在代碼中創(chuàng)建普通用戶
如果你是在編寫注冊(cè)功能或邏輯腳本,可以使用 Django 內(nèi)置的 User 模型。
推薦做法:使用 create_user 方法(它會(huì)自動(dòng)處理密碼加密)。
from django.contrib.auth.models import User
# 創(chuàng)建用戶并保存到數(shù)據(jù)庫(kù)
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]
注意: 千萬(wàn)不要使用 User.objects.create() 來(lái)創(chuàng)建用戶,因?yàn)檫@樣會(huì)導(dǎo)致密碼以明文形式存入數(shù)據(jù)庫(kù),用戶將無(wú)法登錄。
3. 使用 Django 管理后臺(tái)
這是最直觀的圖形化操作方式:
- 啟動(dòng)服務(wù)器:
python manage.py runserver。 - 訪問(wèn)
http://127.0.0.1:8000/admin。 - 使用管理員賬號(hào)登錄。
- 點(diǎn)擊 Users (用戶) 旁的 Add (+) 按鈕。
- 輸入用戶名和密碼即可。
核心 API 參考表
| 方法 | 適用場(chǎng)景 | 密碼處理 |
|---|---|---|
| create_user() | 標(biāo)準(zhǔn)注冊(cè)流程 | 自動(dòng)加密 (Hash) |
| create_superuser() | 創(chuàng)建擁有所有權(quán)限的管理員 | 自動(dòng)加密 (Hash) |
| User.objects.create() | 錯(cuò)誤做法 | 明文存儲(chǔ)(極不安全) |
進(jìn)階建議:自定義用戶模型
如果你正在開發(fā)一個(gè)新項(xiàng)目,Django 官方強(qiáng)烈建議使用 自定義用戶模型 (Custom User Model)。這樣以后你想用“手機(jī)號(hào)”或“郵箱”代替“用戶名”登錄時(shí),就不需要重構(gòu)整個(gè)數(shù)據(jù)庫(kù)了。
如果你忘記了 Django 管理員(Superuser)的密碼,或者需要重置某個(gè)用戶的密碼,可以根據(jù)你的權(quán)限等級(jí)選擇以下方法:
1. 使用命令行重置(最快捷)
如果你有服務(wù)器終端的訪問(wèn)權(quán)限,這是最簡(jiǎn)單的方法。Django 提供了一個(gè)專門的命令來(lái)更改密碼:
python manage.py changepassword <用戶名>
操作步驟:
- 運(yùn)行上述命令(例如:
python manage.py changepassword admin)。 - 按照提示輸入新密碼(輸入時(shí)字符不可見)。
- 確認(rèn)新密碼,完成后系統(tǒng)會(huì)提示
Password changed successfully。
2. 通過(guò) 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í)管理員,可以先進(jìn)入 Shell 查看列表:
from django.contrib.auth.models import User
# 列出所有超級(jí)管理員的用戶名
User.objects.filter(is_superuser=True).values_list('username', flat=True)
4. 通過(guò)管理后臺(tái) (Admin)
如果你已經(jīng)登錄了另一個(gè)具有“更改用戶”權(quán)限的賬號(hào):
- 進(jìn)入
/admin/auth/user/。 - 點(diǎn)擊對(duì)應(yīng)的用戶名。
- 在密碼字段附近,通常會(huì)有一個(gè)**“該表單不包含密碼。你可以在此修改密碼”**的鏈接。
- 點(diǎn)擊鏈接進(jìn)入專用修改頁(yè)面。
常見問(wèn)題提示
- Hash 加密: 永遠(yuǎn)不要直接在數(shù)據(jù)庫(kù)(如 SQLite 或 MySQL 客戶端)中手動(dòng)修改密碼字段,因?yàn)?Django 存儲(chǔ)的是經(jīng)過(guò) PBKDF2 算法加密的 Hash 值,直接輸入明文會(huì)導(dǎo)致無(wú)法登錄。
- Session 失效: 修改密碼后,該用戶在其他設(shè)備上的登錄狀態(tài)會(huì)失效(Session 會(huì)更新)。
如果你正在使用自定義的用戶模型(Custom User Model),導(dǎo)入方式可能略有不同。需要我演示如何獲取自定義模型嗎?
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
用python打開攝像頭并把圖像傳回qq郵箱(Pyinstaller打包)
這篇文章主要介紹了用python打開攝像頭并把圖像傳回qq郵箱,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
關(guān)于Tensorflow中的tf.train.batch函數(shù)的使用
本篇文章主要介紹了關(guān)于Tensorflow中的tf.train.batch函數(shù)的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python3實(shí)現(xiàn)zip分卷壓縮過(guò)程解析
這篇文章主要介紹了Python3實(shí)現(xiàn)zip分卷壓縮過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
python使用jpype導(dǎo)入多個(gè)Jar的異常問(wèn)題及解決
這篇文章主要介紹了python使用jpype導(dǎo)入多個(gè)Jar的異常問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
在pytorch中實(shí)現(xiàn)只讓指定變量向后傳播梯度
今天小編就為大家分享一篇在pytorch中實(shí)現(xiàn)只讓指定變量向后傳播梯度,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
詳解django使用include無(wú)法跳轉(zhuǎn)的解決方法
這篇文章主要介紹了詳解django使用include無(wú)法跳轉(zhuǎn)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Python讀取圖像并顯示灰度圖的實(shí)現(xiàn)
這篇文章主要介紹了Python讀取圖像并顯示灰度圖的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
PyCharm軟件無(wú)法安裝lxml庫(kù)的問(wèn)題及解決
這篇文章主要介紹了PyCharm軟件無(wú)法安裝lxml庫(kù)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01

