Django User Registration and Login System: Step-by-Step Guide
Step 1: Create a Django Project
django-admin startproject auth_demo
cd auth_demo
python manage.py startapp accounts
🧩 Step 2: Add App to settings.py
INSTALLED_APPS = [
...
'accounts',
'django.contrib.sessions',
'django.contrib.auth',
...
]
Also, add login URL if you want:
LOGIN_URL = '/login/'
🧱 Step 3: Create URL Routes
Create a file accounts/urls.py
# accounts/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('register/', views.register_view, name='register'),
path('login/', views.login_view, name='login'),
path('logout/', views.logout_view, name='logout'),
path('dashboard/', views.dashboard_view, name='dashboard'),
]
Now include this in the main urls.py:
# auth_demo/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('accounts.urls')),
]
✏️ Step 4: Create Views
# accounts/views.py
from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
# Register View
def register_view(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
User.objects.create_user(username=username, password=password)
return redirect('login')
return render(request, 'register.html')
# Login View
def login_view(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user:
login(request, user)
return redirect('dashboard')
else:
return render(request, 'login.html', {'error': 'Invalid credentials'})
return render(request, 'login.html')
# Logout View
def logout_view(request):
logout(request)
return redirect('login')
# Dashboard View
@login_required
def dashboard_view(request):
return render(request, 'dashboard.html')
🖼️ Step 5: Create Templates
Create a folder templates inside the accounts app:
accounts/
└── templates/
├── register.html
├── login.html
└── dashboard.html
register.html
<h2>Register</h2>
<form method="post">
{% csrf_token %}
<input type="text" name="username" placeholder="Username"><br>
<input type="password" name="password" placeholder="Password"><br>
<button type="submit">Register</button>
</form>
<a href="/login/">Already have an account? Login</a>
login.html
<h2>Login</h2>
{% if error %}<p style="color:red">{{ error }}</p>{% endif %}
<form method="post">
{% csrf_token %}
<input type="text" name="username" placeholder="Username"><br>
<input type="password" name="password" placeholder="Password"><br>
<button type="submit">Login</button>
</form>
<a href="/register/">Create an account</a>
dashboard.html
<h2>Welcome, {{ request.user.username }}</h2>
<a href="/logout/">Logout</a>
⚙️ Step 6: Run Migrations and Server
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
Now open:
-
http://localhost:8000/register/→ Create account -
http://localhost:8000/login/→ Login -
http://localhost:8000/dashboard/→ Protected vie
Comments
Post a Comment