Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

118
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!