Как обновить данные на странице без перезагрузки. Python - Django

Я начинающий разработчик на Python. Мне нужно регулярно обновлять несколько значений на странице с частотой 1 секунда. Я понимаю, что нужно использовать Ajax, но не представляю, как это сделать. Помогите написать AJAX скрипт, который вызывает определенный метод в представлении

Я написал представление


class MovingAverage(TemplateView): template_name = 'moving_average/average.html'

>
def get(self, request, *args, **kwargs):    
    return render(request, 'moving_average/average.html')

def post(self, request, *args, **kwargs):
    self.symbol = request.POST.get('symbol')
    self.interval = request.POST.get('interval')
    self.periods = int(request.POST.get('periods')) if request.POST.get('periods') != '' else 0
    self.quantity = float(request.POST.get('quantity')) if request.POST.get('quantity') != '' else 0
    self.delta = float(request.POST.get('delta').strip('%')) / 100
    self.button()
    return render(request, 'moving_average/average.html')

Здесь нам нужны две функции для вызова данных из AJAX:

Сначала нам нужно создать функцию представления JsonResponse в файле views.py.

# views.py

from django.http import JsonResponse

def get_some_data(request):
    try:
        if request.method == "POST":
            get_some_data = [1, 2, 3, 4, 5] # You can run the query instead
            return JsonResponse({"data": get_some_data})
        else:
            return JsonResponse({"error": "Invalid Method"})
    except Exception as ep:
        return JsonResponse({"error": str(ep)})

Создайте путь для этой функции в файле urls.py.

# urls.py
path("get-some-data/", views.get_some_data, name="get-some-data")

Теперь мы создадим некоторый AJAX вызов для получения данных без перезагрузки страницы ...

$.ajax({
    type: "POST",
    url: "{% url 'get-some-data' %}",
    data: {
        id: 2, // You can send any type of data ...
        csrfmiddlewaretoken: $("input[name=csrfmiddlewaretoken]").val(), //This is important as we are making POST request, so CSRF verification is important ... 
    },
    success: function(data) {
        console.log(data); // Here you can manipulate some D.O.M. for rendering some data ... 
    }
})

Вот и все. Теперь вы можете идти.

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