Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

128
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda