Здесь много подобных вопросов, но я не могу решить ту проблему, которая у меня есть. Ситуация проста в теории - я посылаю json в Django представление, я получаю json ответ. Я сделал это с python, с Django, с каркасом REST. Но с Ajax я не могу этого сделать, есть что-то с URLconf и относительным URL-адресом ajax, и я не могу понять, что не так и как заставить это работать. Я имею в виду, что с некоторыми URL-адресами я могу отправить запрос с моим плагином chrome, и у меня есть ответ, который мне нужен, но ajax получает 404 с этим конфом. Если я изменю его, Django начнет возвращать мою html страницу вместо json ответа. Что мне здесь не хватает? Мой ajax запрос:
$.ajax({
url: 'ajax/apply_city/',
type: 'GET',
data: {
'city': obj.textContent
},
dataType: 'json',
success: function(data) {
var str = '';
data.districts.forEach(function (district) {
str += '<a class="dropdown-item" href="#" onclick="applyDistrict(this)">' + district + '</a>';
});
window.alert(str);
document.getElementById("district_dropdown").innerHTML = str;
},
});
URL, который работает с запросами от всего, но не ajax:
re_path('^index/$', views.index, name='index'),
re_path('^index/ajax/apply_city/', views.apply_city, name='apply_city'),
Журналы показывают Not Found: /index/...
, когда ajax делает запрос и GET /index/... 404
. Я видел, что для ajax я не должен закрывать URL со знаком $
. Если я сделаю ^index/
, я получу HTML страницу в качестве ответа (но с HTTP200). Может быть, это какая-то проблема Django, или я не понимаю, как это сделать правильно. Если кто-нибудь знает, как это исправить, помогите.