Django, Ajax и GET-запросы - PullRequest
       1

Django, Ajax и GET-запросы

0 голосов
/ 05 марта 2020

Здесь много подобных вопросов, но я не могу решить ту проблему, которая у меня есть. Ситуация проста в теории - я посылаю 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, или я не понимаю, как это сделать правильно. Если кто-нибудь знает, как это исправить, помогите.

1 Ответ

0 голосов
/ 05 марта 2020

Возможно, вы указали неправильный URL. Вы можете попробовать изменить URL в ajax, как показано ниже:

url: "{% url 'apple_city' %}",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...