Django использует формы повсеместно

Мне кажется, я неправильно понимаю Django Forms / работу с базами данных, особенно потому, что я совсем новичок

Для примера возьмем комментарии на YouTube. Если я пишу комментарий к видео на YouTube и нажимаю кнопку submit, комментарий публикуется напрямую, все могут его увидеть, страница не нуждается в моем обновлении. Затем YouTube сохраняет комментарий в базе данных.

Как бы вы реализовали нечто подобное из теории в Django? Согласно текущим знаниям, я должен использовать функцию комментария поместить его в HTML форму > кнопка submit > обновить страницу

Или возьмем другой пример, всплывающее окно сайта, где можно ввести адрес электронной почты, который будет сохранен. Согласно моим текущим знаниям, мне придется создать форму -> кнопку Submit -> Refresh Page, что заставит пользователя вернуться к началу сайта, что раздражает.

Когда я читаю материал и смотрю учебники, все это как бы перемешивается в формы.

TL;DR:

Вам нужно использовать XMLHttpRequest, получить обратно отрендеренный html, который вы вставите в DOM с помощью JS.

Длинное объяснение:

Я использую Django уже некоторое время, и я бы сказал, что он дает свои лучшие результаты на классическом веб-потоке:

  1. страница/форма загружена
  2. форма отправлена
  3. страница перезагружается

Если вы делаете что-то подобное, Django работает очень хорошо, прямо из коробки, он дает вам хорошую валидацию и все необходимые инструменты!

Ок теперь давайте вернемся к 2022 году пожалуйста... :D

Вы все еще можете делать динамический контент с помощью Django, но это не так просто. Для комментария на Youtube или чего-то подобного вам, вероятно, понадобится простая форма (даже с минимальной валидацией) и запрос AJAX/fetch/XMLHttpRequest, который отправляет форму в конечную точку Django и получает обратно кусок HTML, который вы помещаете в нужное место DOM.

Это все еще работает, и это выполнимо, например, вы можете заставить FormView возвращать шаблон (здесь объясняют, как это сделать). Но есть много способов сделать это.

Вернуться на верх