Добавление постов на фронтенде в режиме реального времени Django

Я ищу способ добавления постов в реальном времени в мой блог на Django. Я хотел бы использовать способ, чтобы они появлялись в базе данных сразу после того, как я их вставляю, без обновления и без setInterval и тому подобного. Есть идеи?

Вы можете сделать это, настроив простой CRUD API с помощью Django Rest Framework и затем взаимодействуя с ним со страницы, используя набор асинхронных функций JavaScript для создания, редактирования, удаления и т.д.

JavaScript будет работать в фоновом режиме и вносить изменения в страницу в реальном времени без необходимости ее обновления.

Этот принцип лежит в основе одностраничных приложений. Я лично реализовывал подобные вещи более нескольких раз, но обнаружил, что это не всегда хорошая идея, особенно если вы планируете, что ваш сайт будет сильно расти. Этот тип JavaScript становится очень сложным в обслуживании практически мгновенно.

Если это ваш личный проект, и вы хотите поиграть с ним - это прекрасно. Если вы планируете, что после вас над ним будут работать другие люди, это будет стоить все дороже, поскольку другим разработчикам потребуется время, чтобы расшифровать тесно связанные отношения между вашим HTML и JavaScript.

Не совсем понимаю, что вы имеете в виду.

Но если вы хотите отправить некоторые данные на сервер без обновления страницы, я бы сделал это с помощью вызова AJAX.

На стороне Django я бы сделал представление, в котором вы будете получать POST-данные, сохранять их в базе данных и возвращать JsonResponse (вы можете использовать его для возврата сообщений об ошибке или успехе).

На фронтенде я бы создал функцию, которая предотвращает постинг на сервер event.stopPropagation(). Затем, используя что-то вроде axios для POST данных в вышеупомянутое представление и после получения ответа от сервера обновляя содержимое страницы с помощью JS (манипуляция DOM) для отображения нового содержимого и скрытия или отключения формы (зависит от того, как у вас это уже реализовано).

Вы также можете реализовать полный CRUD API с помощью чего-то вроде Django Rest Framework. Это немного больше работы, но это позволит вам на 100% отделить фронтенд от бэкенда.

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