Programming
people_view
from django.shortcuts import render, redirect,get_object_or_404
from django.contrib.auth import authenticate, login, logout, update_session_auth_hash
from django.contrib import messages
from .forms import LoginForm, CreationForm, PasswordChangeForm, UpdateForm
from django.contrib.auth.decorators import login_required
from .models import Profile
from django.contrib.auth.decorators import login_required
from django.contrib.auth import update_session_auth_hash
from django.contrib import messages
from django.shortcuts import render, redirect
from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth.models import User
def user_create(request):
if request.method == 'POST':
form = CreationForm(data = request.POST)
if form.is_valid():
user = form.save()
messages.success(request, f'User {user.username} created successfully')
return redirect('login')
else:
form = CreationForm()
return render(request, 'people/register.html', {'form':form})
def user_login(request):
if request.method == 'POST':
form = LoginForm(request=request, data=request.POST) # Pass the request object
if form.is_valid():
user = form.get_user() # Use get_user() method
login(request, user)
request.session.save() # Force saving session
messages.success(request, 'Login Successful!')
return redirect('home')
else:
messages.error(request, 'Invalid Username or Password')
else:
form = LoginForm()
return render(request, 'people/login.html', {'form':form})
@login_required
def user_logout(request):
logout(request)
messages.success(request, 'Logged Out')
return redirect('login')
@login_required
def user_update(request):
if request.method == 'POST':
user_form = UpdateForm(request.POST, request.FILES, instance=request.user) # Add request.FILES for image upload
if user_form.is_valid():
user_form.save()
messages.success(request, 'Profile updated successfully!')
return redirect('profile-user', username=request.user.username)
else:
messages.error(request, 'Please correct the errors in the form.')
else:
user_form = UpdateForm(instance=request.user)
return render(request, 'people/update_profile.html', {'form': user_form})
@login_required
def change_password(request):
if request.method == 'POST':
form = PasswordChangeForm(request.user, request.POST)
if form.is_valid():
user = form.save()
update_session_auth_hash(request, user) # Prevents logout after password change
messages.success(request, 'Your password has been changed successfully!')
return redirect('home') # Redirect instead of rendering index.html
else:
messages.error(request, 'Error: Please check your input.')
print(form.errors) # Add this to debug errors
else:
form = PasswordChangeForm(request.user)
return render(request, 'people/password.html', {'form': form})
@login_required
def profile_view(request, username):
user_active = request.user
# Get the target user by username, or return 404 if not found
user = get_object_or_404(User, username=username)
# Get the associated profile
profile = get_object_or_404(Profile, user=user)
if user_active == user:
is_own = True
else:
is_own = False
# Pass both the target user and their profile to the template
return render(request, 'people/profile.html', {'user': user, 'profile': profile, 'is_own':is_own})
@login_required
def profile_list(request):
user = request.user
profiles = Profile.objects.all()
return render(request, 'people/profile_list.html', {'user':user, 'profiles':profiles})
@login_required
def my_profile(request):
return redirect('profile-user', username=request.user.username)
PO
powerty
Author
· Staff
July 27, 2026
July 27, 2026
10
Views
0
Likes
2m
Read