Как отправить простую переменную/данные в поле модели Django с помощью чистого Javascript/Ajax?

Я хочу вставить целое число в поле класса django, но когда я нажимаю POST, происходит сбой

Более конкретно, есть проблема с отправкой post запроса на сервер django. Когда я нажимаю на кнопку "post", я получаю следующую ошибку в терминале. Я пробовал менять переменные, функции и т.д...

File "/home/nick/Desktop/new_venv/lib/python3.8/site-packages/django/utils/datastructures.py", line 86, in __getitem__
    raise MultiValueDictKeyError(key)
django.utils.datastructures.MultiValueDictKeyError: 'age'
[08/Dec/2022 11:21:03] "POST /post/ HTTP/1.1" 500 72563

Вот Ajax-скрипт, включающий кнопки и идентификаторы:

<button id="get">Send GET Request</button><br>
<button id="post">Send POST Request</button>
<script>

var csrftoken = '{{ csrf_token }}'

document.getElementById('get').onclick = () => {
    const requestObj = new XMLHttpRequest()
    requestObj.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            console.log(this.responseText)
        }
    }

    requestObj.open("GET", '/get/')
    requestObj.send()
}

document.getElementById('post').onclick = () => {
    const requestObj = new XMLHttpRequest()
    requestObj.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            console.log(this.responseText)
        }
    }

    requestObj.open("POST", '/post/')
    requestObj.setRequestHeader("X-CSRFToken", csrftoken)

    // const formdata = new FormData()
    // formdata.append('name', 'John')
    // formdata.append('age', '17')
    // requestObj.send(formdata)
    var age = 16;
    requestObj.send(age)
}
</script>

файл Views.py

Это функции маршрутов

def home_page(request):
    return render(request, 'home.html', {})

def get_request(request):
    return HttpResponse("Hello World!")

def post_request(request):
    if request.method == "POST":
        age = request.POST['age'] # trying to insert the value
        new_age = Age.objects.all()
        new_age = Age(age = age)#New instance
        new_age.save()#saving the instance
    return HttpResponse("POST request") # return the httpResponse

файл models.py

класс Модель

from django.db import models ##including the models

class Age(models.Model):
    age = models.IntegerField(default = 1) # the integer field

файл urls.py включает в себя все маршруты

urlpatterns = [
    path('admin/', admin.site.urls),
    path('home/', home_page),
    path('get/', get_request),
    path('post/', post_request),
]

Я испробовал множество способов изменить тип данных в функции send, но безуспешно. Я ожидаю вставить целое число в целочисленное поле класса Age.

Я нашел много примеров с jQuery, что является самым коротким путем, но как я могу выполнить задачу с помощью ванильного Javascript?

Что я делаю не так?

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