Django request.POST.get не работает с запросами Vanilla JavaScript

Я уже нашел решение этой проблемы, но я знаю только то, что оно работает. Я не знаю, как и почему, и это цель данного вопроса.

У меня есть файл Vanilla JavaScript, который управляет зависимым выпадающим списком триплетов "страны-регионы-города"

Вот код:

Этот код отправит запрос к функциям, определенным в файле views.py, я покажу только первую, потому что нет необходимости показывать обе, чтобы понять вопрос. Вот код:

# views.py
def getProvince(request):
    # country = request.POST.get('country')
    #from django.http import HttpResponse
    #print(HttpResponse(request.POST.items()))
    country = json.load(request)['country']
    af = AddressForm()
    provinces = af.get_state_by_country(country, get_language())
    return JsonResponse({'provinces': provinces})

Если я использую request.POST.get('country'), я ничего не получаю (ничего, если я сделаю оператор печати в страну).

Это будет работать только с

country = json.load(request)['country']

И мой вопрос: ПОЧЕМУ? Но это еще не все. Если я напишу тот же код в JQuery, то request.POST.get('country') будет работать!

Вот JQuery:

Итак, главный вопрос: почему request.POST.get('country') работает с JQuery (несмотря на то, что я посылаю строгированный объект JSon), но не работает с Vanilla JavaScript? Почему View принимает только json.load(request)['country'], и даже если я посылаю строку напрямую, это не работает в другом направлении?

Конечно, я мог бы просто смириться с тем, что код работает именно так, и просто быть довольным этим. Но я не удовлетворен. Я хотел бы знать, почему то же самое работает в JQuery, но не работает в Vanilla JavaScript, и почему я должен использовать другой механизм в обычном JS, чтобы заставить его работать.

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