Django Create User – Add Users via Shell, Admin, and Views (2025 Guide)
Introduction – What Does “Create User” Mean in Django?
Creating users in Django allows you to manage authentication, permissions, and user-specific data in your app. Django’s built-in User model supports everything from logins to profile management. You can create users through the admin panel, command line, or programmatically via views.
In this guide, you’ll learn:
- How to create users using Django shell
- How to create users from views
- How to create superusers
- Best practices for user security
Step 1: Create a Superuser for Admin Access
Superusers can access the Django Admin and manage all records.
$ python manage.py createsuperuser
Enter:
- Username
- Password
This user has full access to admin and all models.
Step 2: Create a User Using Django Shell
$ python manage.py shell
Then:
from django.contrib.auth.models import User
user = User.objects.create_user(username='john_doe', email='john@example.com', password='securepassword123')
This creates a regular authenticated user.
Step 3: Create User from a View (Not Recommended for Public Use Without CSRF)
views.py
from django.contrib.auth.models import User
from django.http import HttpResponse
def create_test_user(request):
User.objects.create_user(username='demo', email='demo@example.com', password='demopassword')
return HttpResponse(" Test user created.")
Useful for testing purposes, but wrap in permission checks for production.
Step 4: Use Django Admin to Add Users
- Start the server:
$ python manage.py runserver - Visit:
http://localhost:8000/admin/ - Navigate to Users → Click Add User
- Enter username, password → Save
- Assign permissions, groups, and profile info on the next page.
Optional: Customize User Model (Advanced)
To customize user fields (like phone number), extend AbstractUser:
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
phone_number = models.CharField(max_length=20, blank=True)
Update settings.py:
AUTH_USER_MODEL = 'yourapp.CustomUser'
Best Practices
- Always use
create_user()(neverUser() + save()) to hash passwords - Use secure, random passwords for shell-created users
- Don’t expose user creation via GET requests
- Use forms and
UserCreationFormfor registration pages
Summary – Recap & Next Steps
Key Takeaways:
- Create superusers for admin using
createsuperuser - Create users via
create_user()in shell or views - Admin panel allows full user management
- Extend
AbstractUserfor custom user profiles
Real-World Relevance:
Users are central to most web applications—auth, permissions, profiles, e-commerce accounts, and admin access all depend on well-managed user creation.
Frequently Asked Questions (FAQ)
What’s the difference between create_user() and create_superuser()?
create_user() → Regular user
create_superuser() → Admin with full access (is_staff=True, is_superuser=True)
Can I manually set a user password?
Yes, use:
user.set_password('newpassword')
user.save()
Can I create users through a form?
Yes. Use UserCreationForm:
from django.contrib.auth.forms import UserCreationForm
How do I check if a user exists?
User.objects.filter(username='john_doe').exists()
How do I activate or deactivate a user?
Use:
user.is_active = False
user.save()
Share Now :
