📌  相关文章
📜  创建超级用户 (1)

📅  最后修改于: 2023-12-03 15:07:13.162000             🧑  作者: Mango

创建超级用户

在许多的 Web 应用程序中,需要创建超级用户。超级用户是具有最高权限的用户,可以执行任何操作,包括创建、修改和删除数据。

Django 中创建超级用户

Django 是一个使用 Python 编写的 Web 应用程序框架,它提供了一个命令行工具来创建超级用户。可以通过以下步骤创建超级用户:

  1. 在命令行工具中,进入 Django 项目的根目录。

  2. 运行以下命令:

python manage.py createsuperuser
  1. 根据提示输入用户名、邮箱地址和密码,完成创建超级用户。

下面是一个略微复杂的例子,展示如何在 Django 项目中使用管理命令来创建超级用户:

# file: myapp/management/commands/create_superuser.py
from django.core.management.base import BaseCommand
from django.contrib.auth import get_user_model

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

    def add_arguments(self, parser):
        parser.add_argument('username', type=str)
        parser.add_argument('email', type=str)
        parser.add_argument('password', type=str)

    def handle(self, *args, **options):
        User = get_user_model()

        username = options['username']
        email = options['email']
        password = options['password']

        if not User.objects.filter(username=username).exists():
            User.objects.create_superuser(username, email, password)
            self.stdout.write(self.style.SUCCESS('Superuser created'))
        else:
            self.stdout.write(self.style.ERROR('Superuser already exists'))

这个脚本实现了一个名为 create_superuser 的命令,它接受三个参数:usernameemailpassword。在执行命令时,会检查是否已存在带有给定用户名的用户。如果不存在,则会创建一个新的超级用户。否则,将会输出错误信息。

Flask 中创建超级用户

Flask 是另一个 Python Web 应用程序框架,它在创建超级用户方面并没有像 Django 那样提供内置的命令。但是,我们可以使用 Flask 的扩展来实现创建超级用户的功能。例如,可以使用 Flask-User 扩展来创建具有各种权限的用户。

下面是一个示例代码,展示了如何在 Flask 中使用 Flask-User 扩展来创建超级用户:

from flask import Flask
from flask_user import UserMixin, UserManager, SQLAlchemyAdapter
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SECRET_KEY'] = 'super-secret'

db = SQLAlchemy(app)

# Define User model
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(255), nullable=False)
    password = db.Column(db.String(255), nullable=False)
    active = db.Column(db.Boolean(), nullable=False, default=False)
    is_admin = db.Column(db.Boolean(), nullable=False, default=False)

# Set up Flask-User
db_adapter = SQLAlchemyAdapter(db, User)
user_manager = UserManager(db_adapter, app)

# Create superuser
with app.app_context():
    if not User.query.filter_by(email='admin@example.com').first():
        user = User(email='admin@example.com', password=user_manager.hash_password('password'), active=True, is_admin=True)
        db.session.add(user)
        db.session.commit()

这个例子使用 Flask 和 Flask-User 扩展来创建超级管理员用户。在创建超级用户时,请确保使用安全的密码和不易被猜测的用户名。