Каков наилучший подход к использованию django и ajax?

Сейчас я работаю над своим первым большим проектом и не могу понять, как использовать Django с ajax. На моем сайте есть несколько сервисов, которые работают отдельно и написаны на javascript, но иногда мне нужно отправить некоторую информацию на сервер. Также у меня есть пользовательский интерфейс администратора, который содержит различные операции по изменению базы данных. Все эти действия должны выполняться без перезагрузки страницы (используя ajax post и get запросы).

Итак, я думаю, у меня есть два способа сделать это:

  1. Использование ajax и классических Django views для каждой операции.
  2. Использование ajax и интегрированных в мой сайт Django REST Framework API методов.

Камнем преткновения является то, что я не буду использовать методы этого API из других типов клиентов, а буду вызывать их из браузеров пользователей через ajax. Какой подход будет лучшим в моей ситуации? Мне кажется, что второй способ более "серьезный", но я не имею большого опыта создания подобных проектов и не могу говорить прямо.

Вам не нужно интегрировать REST. Вы можете сделать ajax вызов к обычному представлению, как вы это делаете при взаимодействии с пользователем. Представление может возвращать http-ответ или JSON или все, что вам нужно. Если вы хотите изменить что-то в DOM без обновления страницы, я могу предложить HTMX (https://htmx.org/)

стандартный вызов ajax для получения некоторого json:

let datas = {id: $(this).val(),};
                $.ajax({
                    url: "{% url 'to_your_view' %}",
                    type: "POST",
                    data: datas,
                    success: function (json) {


                        console.log(json);
                    },
                    error: function (xhr, errmsg, err) {
                        console.log(xhr.status + ": " + xhr.responseText);
                    }
                });

и в поле зрения:

def to_your_view(request):
    if request.method == "POST":
        id = request.POST.get('id', 0)
        if id != 0:
             return HttpResponse(json.dumps(100), content_type="application/json")
    
Вернуться на верх