@Eldybyhtyn

Как перенести данные из динамических инпутов в базу данных?

Проект на django. Есть некая таблица, данные которой выводятся из базы данных SQLite.
6183a03f0d563610240599.jpeg
У таблицы режим просмотра и редактирования
6183a0510a723827892106.jpeg
С помощью инпутов можно редактировать таблицу и добавлять новые столбцы и строки. Они добавляются с помощью js.
После нажатия кнопки "отправить" данные из инпутов должны отправится в базу данных. Как сделать так, чтобы django просмотрел всю страницу и добавил данные из инпутов в базу данных?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
чтобы django просмотрел всю страницу

Ну для начала хочу убедиться: ты понимаешь разницу между кодом на сервере и кодом на клиенте?
На случай если нет

Цепочка обычно такая:
1. Клиент посылает запрос, в том числе при переходе по ссылке
2. Сервер генерирует страницу (тут работает питон), которая может включать в себя JS код.
3. Сервер отправляет страницу клиенту. Начиная с этого момента Питон не может ничего сделать.
4. Клиент разбирает страницу и выполняет JS код.
5. JS код может выполнить еще один запрос к серверу.

Так что не "пусть django просмотрит страницу", а "JS код на странице должен сформировать фоновый (AJAX) запрос к отдельному URL, в теле которого передать на сервер содержимое таблицы. Обработчик этого URL на стороне сервера должен принять тело запроса, валидировать полученные данные и поместить их в таблицу".
Тогда задача разбивается на несколько типовых подзадач:
1. Отправка AJAX-запроса на JS по нажатию кнопки на странице (гуглится).
2. Отправка AJAX-запроса с телом (гуглится, смотри документацию по JS).
3. Приём тела запроса в Django (гуглится, смотри документацию по Django).
4. Превращение тела запроса в структуру данных, удобную для тебя (должен сделать ты). Можно передавать JSON, его легко формировать через JS и легко читать Питоном. Например, список из объектов, где каждый объект - это одна строка таблицы, а поля объекта - значения колонок.
5. Перебор элементов в структуре и их валидация. Делаешь ты, так как только ты знаешь, какие данные передаются.
6. Для валидных данных - добавление в таблицу БД (гуглится, смотри документацию по модулю sqlite3).

Если возникнут вопросы по конкретной подзадаче, задавай их отдельно.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы