在 Django 中自動建立超級使用者命令

Vaibhav Vaibhav 2021年6月29日
在 Django 中自動建立超級使用者命令

在 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
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.