Плохо выполненное ajax-представление
У меня есть код на django и ajax, который, хотя и работает у меня, но предполагается, что если он создает пользователя, он должен дать мне ответ if, а он дает мне ответ else, но с сообщением, что "я создал пользователя", однако так не должно быть, поскольку он также принимает else, если вы видите ошибку, если gmail уже существует... как я могу это исправить?:
var csrftoken = 'YOUR_CSRF_TOKEN_VALUE';
$(document).ready(function() {
$('#registrar_usuario').submit(function(event) {
event.preventDefault(); // Prevent default form submission
var form = $(this);
var csrftoken = form.find('input[name="csrfmiddlewaretoken"]').val();
// Validate passwords and required fields
if (!validarCamposRequeridos()) {
return; // Prevent AJAX request if validation fails
}
// Send AJAX request to validate email on server
$.ajax({
url: '/login/', // URL of the 'validarCampos' view
method: 'POST',
data: {
'csrfmiddlewaretoken': csrftoken,
'email_usuario': $('#email_usuario').val(),
'nombre_usuario': $('#nombre_usuario').val(),
'fecha_nacimiento': $('#fecha_nacimiento').val(),
'password1': $('#password1').val(),
'password2': $('#password2').val(),
},
dataType: 'json',
success: function(response) {
if (response.success && response.status === 200) {
console.log("si ejecuta envio")
// aqui se presenta el mensaje cuando deberia mostrar el que funciona xd
$('#alertaError').css('color', '#29A52D');
$('#alertaError').text("Usuario creado correctamente!");
// Consider a slight delay if needed
setTimeout(function() {
$('#registrar_usuario').submit(); // Submit the form after a delay
}, 500);
} else {
console.log("correo ya existe")
// If there are errors, display them in the 'alertaError' label
$('#alertaError').text(response.mensaje);
}
},
error: function(error) {
console.error('Error al validar campos:', error);
},
});
});
});
//validar que todos los campos no esten vacios
function validarCamposRequeridos() {
const requiredFields = ['email_usuario', 'nombre_usuario', 'fecha_nacimiento', 'password1', 'password2'];
for (const field of requiredFields) {
if (!$('#' + field).val()) {//de alguna forma '#' toma todas las ids
$('#alertaError').text("Todos los campos son obligatorios.");
return false;
}
}
// Return true if all fields are filled
return true;
}
код джанго:
#registrar usuario
def registrar_usuario(request):
if request.method != "POST":
print("quedo aqui")
return render(request, "./login.html")
else:
try:
# Check if email already exists
email_usuario = request.POST["email_usuario"]
print("Checking email:", email_usuario) # Debugging statement
if Registro.objects.filter(email_usuario= email_usuario).exists():
print(f"el correo {email_usuario} ya existe")
respuesta = {
"mensaje": f"El correo electrónico {email_usuario} ya está en uso."
}
return JsonResponse(respuesta)
else:
#Crear usuario
print("creando usuario")
user = Registro.objects.create(
nombre_usuario=request.POST["nombre_usuario"],
fecha_nacimiento=request.POST["fecha_nacimiento"],
password=request.POST["password1"],
email_usuario=email_usuario,
)
user.is_active = True
user.save()
return JsonResponse({'mensaje': 'Usuario creado correctamente!'})
Я пробовал менять ответ на .exito или .success, но ничего не помогает