在 Django 中自動建立超級使用者命令
Vaibhav Vaibhav
2021年6月29日
在 Django 中,擁有管理員許可權的使用者稱為超級使用者。超級使用者可以做任何事情。他們可以建立新使用者、刪除現有使用者、操縱其他使用者的資訊等。
在 Django 中,要建立超級使用者,我們通常使用命令列命令 python manage.py createsuperuser
,然後再輸入一些內容:使用者名稱、電子郵件和密碼。
但是,如果我們可以自動化整個過程或使用一行程式碼完成它,那不是很神奇嗎?
在本文中,我們將學習自動建立超級使用者。
Django Shell 是一個命令列 Python 工具,可使用 Django 的資料庫 API 與資料庫進行互動。使用 Django Shell,我們可以在資料庫中建立資料,修改現有資料,甚至刪除現有資料。此外,我們還可以建立新使用者和超級使用者。
要使用 Django Shell 建立超級使用者,請使用以下指令碼。
echo "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser('userUsername', 'userEmail', 'userPassword')" | python manage.py shell
此指令碼首先匯入一個方法 get_user_model
,以獲取 Django 使用的使用者模型。
此方法檢索對實際使用者模型物件的引用並將其儲存在變數 User
中。
使用這個引用,它然後使用 create_superuser()
建立一個新的超級使用者。此方法接受使用者名稱、電子郵件和密碼。
請注意,這些欄位對 Django 的預設使用者模型有效。如果你使用自定義使用者模型,則用於建立使用者或超級使用者的欄位將相應更改。
使用 Python 指令碼建立超級使用者
由於 Django 模型在 Django 專案中隨處可見,我們可以使用它們來建立使用者和超級使用者。我們可以建立一個接受一些輸入的函式,然後建立一個使用它們來完成這個任務的超級使用者。
from django.contrib.auth.models import User
def createSuperUser(username, password, email="", firstName="", lastName=""):
invalidInputs = ["", None]
if username.strip() in invalidInputs or password.strip() in invalidInputs:
return None
user = User(
username=username,
email=email,
first_name=firstName,
last_name=lastName,
)
user.set_password(password)
user.is_superuser = True
user.is_staff = True
user.save()
return user
該函式有兩個強制引數,即使用者名稱和密碼,以及三個可選引數。它根據傳遞的值建立一個超級使用者,並返回對新形成的超級使用者的引用。
作者: Vaibhav Vaibhav