Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

122
Vistas
Envíe datos a la base de datos a través de la búsqueda y luego muestre estos datos en la página html a través de la búsqueda nuevamente sin enviar el formulario o actualizar la página

Tengo una aplicación Django. Estoy escribiendo un comentario en un formulario y lo estoy enviando a mi base de datos a través de búsqueda.

mi codigo js

 document.getElementById("comment-form").onsubmit = function write_comment(e) { e.preventDefault(); const sxolio = document.getElementsByName("say")[0].value; fetch('/comment', { method: 'POST', body: JSON.stringify({ say: sxolio }) }) .then(response => response.json()) .then(result => { //print result console.log(result); });

mis vistas.py

 @requires_csrf_token @login_required(login_url = 'login')#redirect when user is not logged in def comment(request): if request.method != 'POST': return JsonResponse({"error": "POST request required."}, status=400) new_comment = json.loads(request.body) say = new_comment.get("say", "") user = request.user comment = Comment( user = user, say = say, photo = Userimg.objects.get(user = user).image ) comment.save() return JsonResponse({"message": "Comment posted."}, status=201)

Lo siguiente que quiero hacer es mostrar este comentario y todos los demás datos de mi base de datos en mi página html sin actualizar. En el momento en que presione el botón de publicación, quiero que se muestre el comentario. No quiero actualizar la página con algún elemento.innerHTML = datos.

mi codigo js

 function display_comments() { fetch('/all_comments') .then(response => response.json()) .then(all_comments => { do some stuff

mis vistas.py

 @login_required(login_url = 'login')#redirect when user is not logged in def all_comments(request): all_comments = Comment.objects.order_by("-date").all() print(all_comments[0].serialize()) return JsonResponse([comment.serialize() for comment in all_comments], safe=False)

Si uso preventDefault, puedo ver que mi base de datos se actualizó pero no puedo recuperar los datos. Si omito la prevención predeterminada, todo funciona bien, pero mi página se actualiza simultáneamente. ¿Hay alguna forma de hacerlos ambos sin actualizar la página?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El problema más probable es que su solicitud de vista all_comments se realice antes de que el comment haya terminado de guardarse en la base de datos.

Es importante que la respuesta para el comment se devuelva por completo antes de que se all_comments la obtención de todos los comentarios. Puedes lograr esto haciendo lo siguiente...

 function display_comments() { fetch('/all_comments') .then(response => response.json()) .then(all_comments => { console.log(all_comments); }); } document.getElementById("comment-form").onsubmit = function write_comment(e) { e.preventDefault(); const sxolio = document.getElementsByName("say")[0].value; fetch('/comment', { method: 'POST', body: JSON.stringify({ say: sxolio }) }) .then(response => response.json()) .then(result => { // print result console.log(result); // The request to /comment has finished it is now safe to request all // comments. display_comments(); }); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda