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, чтобы заставить его работать.