Как отправить форму и отобразить вывод без обновления
Я пытаюсь создать простой калькулятор, который получает от пользователя вводимое число и показывает под ним вычисленный результат. Код работает нормально, но он перенаправляет и перезагружает страницу, что очевидно. Я не хочу этого, я хочу, чтобы вывод отображался сразу после того, как пользователь заполнит форму. Я не разбираюсь в js и ajax, поэтому буду признателен, если вы поможете мне с этой частью. Я много искал, но так и не смог понять, что делать. вот моя форма:
<form id="myform" method="POST">
{% csrf_token %}
Enter first number: <input type="text" name="num1"><br><br>
<input type="submit">
</form>
и вот вывод в нужной мне форме:
<h1>congrats!</h1>
все просто. заполняем форму, отправляем и выводим простое сообщение без обновления
Если у вас ноль знаний и вы не смогли создать ни одного кода, вы, скорее всего, столкнетесь с множеством проблем, AJAX против Django формы - это другой уровень сложности и не будет реализован, если вы не уверены на 100%, что это добавит что-то к UX, но вкратце
Используя Jquery, вы можете построить Ajax вызов к Django представлению :
JS Script:
$(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();
});
});
Django View :
@csrf_exempt
def form_post(request):
# Do something with your data
text = request.POST.get("num1")
print(text)
return JsonResponse({"text": text})
Как вы видите, для работы с Ajax вам нужно гораздо больше, вам нужно хорошее понимание формы Django, достаточно хорошее для Ajax и JS и, наконец, как работает асинхронность.