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。 - 使用管理員賬號登錄。
- 點擊 Users (用戶) 旁的 Add (+) 按鈕。
- 輸入用戶名和密碼即可。
核心 API 參考表
| 方法 | 適用場景 | 密碼處理 |
|---|---|---|
| create_user() | 標(biāo)準(zhǔn)注冊流程 | 自動加密 (Hash) |
| create_superuser() | 創(chuàng)建擁有所有權(quán)限的管理員 | 自動加密 (Hash) |
| User.objects.create() | 錯誤做法 | 明文存儲(極不安全) |
進(jìn)階建議:自定義用戶模型
如果你正在開發(fā)一個新項目,Django 官方強烈建議使用 自定義用戶模型 (Custom User Model)。這樣以后你想用“手機號”或“郵箱”代替“用戶名”登錄時,就不需要重構(gòu)整個數(shù)據(jù)庫了。
如果你忘記了 Django 管理員(Superuser)的密碼,或者需要重置某個用戶的密碼,可以根據(jù)你的權(quán)限等級選擇以下方法:
1. 使用命令行重置(最快捷)
如果你有服務(wù)器終端的訪問權(quán)限,這是最簡單的方法。Django 提供了一個專門的命令來更改密碼:
python manage.py changepassword <用戶名>
操作步驟:
- 運行上述命令(例如:
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/。 - 點擊對應(yīng)的用戶名。
- 在密碼字段附近,通常會有一個**“該表單不包含密碼。你可以在此修改密碼”**的鏈接。
- 點擊鏈接進(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打開攝像頭并把圖像傳回qq郵箱(Pyinstaller打包)
這篇文章主要介紹了用python打開攝像頭并把圖像傳回qq郵箱,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
關(guān)于Tensorflow中的tf.train.batch函數(shù)的使用
本篇文章主要介紹了關(guān)于Tensorflow中的tf.train.batch函數(shù)的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04
python使用jpype導(dǎo)入多個Jar的異常問題及解決
這篇文章主要介紹了python使用jpype導(dǎo)入多個Jar的異常問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
詳解django使用include無法跳轉(zhuǎn)的解決方法
這篇文章主要介紹了詳解django使用include無法跳轉(zhuǎn)的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03

