Mi perfil implementado, con cambio de contraseña

This commit is contained in:
adrigongv23 2026-06-23 12:41:21 +02:00
parent a6306c5218
commit 0860c191f2
5 changed files with 181 additions and 6 deletions

View file

@ -0,0 +1,20 @@
from django import forms
from .models import CustomUser
class PerfilForm(forms.ModelForm):
class Meta:
model = CustomUser
fields = ['username', 'first_name', 'last_name', 'email']
widgets = {
'username': forms.TextInput(attrs={'class': 'form-control'}),
'first_name': forms.TextInput(attrs={'class': 'form-control'}),
'last_name': forms.TextInput(attrs={'class': 'form-control'}),
'email': forms.EmailInput(attrs={'class': 'form-control'}),
}
labels = {
'username': 'Usuario',
'first_name': 'Nombre',
'last_name': 'Apellidos',
'email': 'Correo electrónico',
}

View file

@ -1,7 +1,39 @@
from django.shortcuts import render
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth import update_session_auth_hash
from django.contrib import messages
from .forms import PerfilForm
@login_required # Esto obliga a que el usuario tenga que loguearse antes de ver la web
@login_required
def index(request):
# 'request.user' contiene los datos del usuario que está navegando
return render(request, 'index.html')
return render(request, 'index.html')
@login_required
def mi_perfil(request):
perfil_form = PerfilForm(instance=request.user)
password_form = PasswordChangeForm(user=request.user)
if request.method == 'POST':
if 'guardar_perfil' in request.POST:
perfil_form = PerfilForm(request.POST, instance=request.user)
if perfil_form.is_valid():
perfil_form.save()
messages.success(request, 'Tus datos se han actualizado correctamente.')
return redirect('mi_perfil')
elif 'cambiar_password' in request.POST:
password_form = PasswordChangeForm(user=request.user, data=request.POST)
if password_form.is_valid():
user = password_form.save()
update_session_auth_hash(request, user)
messages.success(request, 'Tu contraseña se ha cambiado correctamente.')
return redirect('mi_perfil')
context = {
'perfil_form': perfil_form,
'password_form': password_form,
}
return render(request, 'mi_perfil.html', context)