Estoy tratando de crear una calculadora simple que obtenga un número de entrada del usuario y muestre el resultado calculado debajo. El código funciona bien pero redirige y recarga la página, obviamente. No quiero que se muestre el resultado tan pronto como el usuario complete el formulario. No tengo ningún conocimiento de js y ajax, así que les agradecería que me ayudaran con esa parte. Busqué mucho pero no podía entender qué hacer. este es mi formulario:
<form id="myform" method="POST"> {% csrf_token %} Enter first number: <input type="text" name="num1"><br><br> <input type="submit"> </form>y este es el resultado debajo del formulario que quiero:
<h1>congrats!</h1>tan simple como eso. complete el formulario, envíelo y muestre un mensaje simple sin actualizar
Si no tiene conocimiento y no pudo producir ningún código, lo más probable es que enfrente muchos problemas, la forma AJAX vs Django es otro nivel de complejidad y no se implementará a menos que esté 100% seguro de que agregará algo a la UX, pero en corto.
Usando Jquery, podría crear una llamada Ajax a una vista de Django :
Guión JS:
$(document).ready(function () { $("form").submit(function (event) { var formData = { justification: $("#justification").val(), }; $.ajax({ type: "POST", url: "{% url 'django-view' %}", data: formData, dataType: "json", encode: true, }).done(function (data) { if (data.success) { console.log("error"); } else { # display your text somewhere in your page } }); event.preventDefault(); }); });Vista de Django:
@csrf_exempt def form_post(request): # Do something with your data text = request.POST.get("num1") print(text) return JsonResponse({"text": text})Como puede ver, necesita mucho más para trabajar con Ajax, necesita una buena comprensión de la forma Django, una lo suficientemente buena para Ajax y JS y, finalmente, cómo funciona asíncrono.