If you want to create a user in Django who does not have access to the admin panel, you can use the create_user method instead of createsuperuser. The create_user method creates a regular user account without admin privileges.
You can create a custom management command to add users. Create a new file management/commands/create_user.py in one of your apps (e.g., myapp):
# myapp/management/commands/create_user.py
from django.core.management.base import BaseCommand
from django.contrib.auth import get_user_model
class Command(BaseCommand):
help = 'Create a regular user'
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, **kwargs):
username = kwargs['username']
email = kwargs['email']
password = kwargs['password']
User = get_user_model()
user = User.objects.create_user(username=username, email=email, password=password)
user.save()
self.stdout.write(self.style.SUCCESS(f'User {username} created successfully'))
After creating this file, you can run the management command:
python manage.py create_user username user@example.com password