【问题标题】:Django, Ajax and GET requestsDjango、Ajax 和 GET 请求
【发布时间】:2020-06-17 14:57:16
【问题描述】:

这里有很多类似的问题,但我无法解决我遇到的问题。理论上情况很简单 - 我将 json 发送到 Django 视图,我得到一个 json 响应。我用 python、Django 和 REST 框架完成了它。但是对于 Ajax,我无法做到这一点,URLconf 和 ajax 的相对 url 有一些东西,我不知道出了什么问题以及如何使它工作。我的意思是使用一些 URL confs,我可以使用我的 chrome 插件发送请求,并且我有我需要的响应,但是 ajax 使用该 confs 得到 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;
        },
    });

适用于所有请求但不适用于 ajax 的 URL:

    re_path('^index/$', views.index, name='index'),
    re_path('^index/ajax/apply_city/', views.apply_city, name='apply_city'),

当 ajax 发出请求时,日志显示 Not Found: /index/...GET /index/... 404。我已经看到,对于 ajax,我不应该使用 $ 符号关闭 url。如果我这样做 ^index/ 我会得到 HTML 页面作为响应(但使用 HTTP200)。也许这是一些 Django 问题,或者我不明白如何正确地做到这一点。如果有人知道如何解决它,请帮助。

【问题讨论】:

  • 似乎 URL ajax/apply_city/ 不是绝对 URL。您可能需要提供绝对网址,/index/ajax/apply_city/
  • @ArakkalAbu 我试过了,结果是一样的 404
  • 你能通过浏览器的Netwotk部分检查ajax请求实际使用的url吗?
  • @ArakkalAbu 天哪,我真蠢!我使用了没有 ajax 功能的引导程序版本的 jQuery。感谢您告诉我在哪里查找错误!

标签: python jquery django ajax


【解决方案1】:

可能是您输入了错误的 URL。您可以尝试在 ajax 中更改 URL,如下所示:

url: "{% url 'apple_city' %}",

【讨论】:

  • 谢谢,但我发现这都是我的错,我使用了错误版本的 jQuery。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-03
  • 1970-01-01
  • 2011-03-30
  • 1970-01-01
  • 2016-06-18
相关资源
最近更新 更多