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

Пользователь

от vladimir , в категории: Python , 2 месяца назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от felix , 2 месяца назад

@vladimir 

Для того чтобы получить массив данных через Ajax в Django, вы можете использовать стандартные методы Django для обработки POST-запросов.


Вот пример, показывающий, как это сделать:

  1. Ваш HTML-файл должен содержать элемент
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<script>
    var data = [1, 2, 3, 4, 5];
    $.ajax({
        type: "POST",
        url: "/my-url/",
        data: JSON.stringify({data: data}),  // Преобразуйте массив в JSON-строку
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(response) {
            console.log(response);
        },
        error: function(response) {
            console.log(response);
        }
    });
</script>


  1. В файле views.py вашего приложения, определите функцию, которая будет обрабатывать этот запрос. Например:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import json
from django.http import JsonResponse

def my_view(request):
    if request.method == 'POST':
        data = json.loads(request.body)  # Распакуйте JSON-строку в словарь
        my_data = data['data']  # Получите массив данных из словаря
        # Делайте что-то с полученными данными
        response_data = {'message': 'Success!'}
        return JsonResponse(response_data)


  1. В файле urls.py вашего приложения, добавьте соответствующий URL-путь для этой функции обработки запроса. Например:
1
2
3
4
5
6
from django.urls import path
from . import views

urlpatterns = [
    path('my-url/', views.my_view, name='my_view'),
]


Теперь при отправке Ajax-запроса на /my-url/ с массивом данных, вы получите этот массив в Django-представлении и можете с ним работать. В приведенном примере возвращается JsonResponse, но вы можете возвращать и другие виды ответов, в зависимости от ваших потребностей.