详解Django的 create_superuser() 函数:创建超级用户

  • Post category:Python

create_superuser()函数是Django框架中内置的用户创建函数,用于创建超级用户。下面是它的作用与使用方法的完整攻略。

作用

create_superuser()函数的作用是创建超级用户,用于管理网站以及执行需要超级用户权限的操作,如数据库迁移、创建Django应用、修改用户内容等等。

使用方法

使用create_superuser()函数创建超级用户需要先导入django.contrib.auth.models模块,并获取User模型类。下面是示例代码:

from django.contrib.auth.models import User

user = User.objects.create_superuser(
    username='admin',
    email='admin@example.com',
    password='password'
)

以上代码中,username参数是指超级用户的用户名,email参数是指超级用户的电子邮件地址,password参数是指超级用户的密码。

其中,create_superuser()函数本质上是create_user()函数的一个包装器。如果要使用create_user()函数创建管理员用户,需要手动将is_staffis_superuser参数设置为True,而create_superuser()函数已经将这些参数设置为True

user = User.objects.create_user(
    username='admin', 
    email='admin@example.com', 
    password='password',
    is_staff=True, 
    is_superuser=True
)

需要注意的是,使用create_user()create_superuser() 函数来创建用户时,密码在数据库中以加密的形式存储,无法直接读取。如果需要验证密码,需要使用user.check_password('password')检查密码是否正确。

示例

示例一

例如,我们需要在一个Django应用程序启动时,创建超级用户,可以在此过程中使用create_superuser()函数。

在项目的管理脚本中,我们可以使用以下代码来创建一个超级用户:

from django.contrib.auth.models import User
from django.core.management.base import BaseCommand

class Command(BaseCommand):
    help = 'Create superuser'

    def handle(self, *args, **options):
        User.objects.create_superuser(
            username='admin',
            email='admin@example.com',
            password='password'
        )

使用以下命令启动管理脚本来创建超级用户:

python manage.py create_superuser

示例二

假设在一个Django应用程序中,你需要使用create_superuser()函数创建一些管理用户,可以在视图函数中调用create_superuser()函数。

from django.contrib.auth.models import User
from django.shortcuts import render
from django.urls import reverse_lazy
from django.views.generic.edit import CreateView

class CreateUserView(CreateView):
    model = User
    fields = ['username', 'email', 'password']
    template_name = 'create_user.html'
    success_url = reverse_lazy('login')

    def form_valid(self, form):
        User.objects.create_superuser(
            username=form.cleaned_data['username'],
            email=form.cleaned_data['email'],
            password=form.cleaned_data['password']
        )
        return super().form_valid(form)

在此示例中,我们使用Django的通用视图来创建用户,并在表单验证成功后使用create_superuser()函数创建管理员用户。

希望以上攻略可以对你有所帮助。