首页 > 解决方案 > Ajax 使用 Django 后端发送 GET,而不是 PUT 和 DELETE

问题描述

我在 HTML 中有两个自定义表单:

带有表单的页面截图

页面通过链接加载.../personal/<staff_id>/

我有以下第二种形式的按钮代码:

按钮的网址:

var updateUrl = '../personal/change/{{ profile.user.id }}/'

名称为Изменить和 id="change"的蓝色按钮:

$("#change").on("click", function (event) {
      var form = $('#form-profile');
      $.ajax({
          url: updateUrl,
          type: 'PUT',
          method: 'PUT',
          ...
      });
  });

名称为Удалить和 id="delete:

$("#delete").on("click", function (event) {
      var form = $('#form-profile');
      $.ajax({
          url: updateUrl,
          type: 'PUT',
          method: 'PUT',
          ...
      });
  });

按下按钮时,页面会重新加载 url 中的所有表单数据

个人/<staff_id>?csrfmiddlewaretoken=C5UPpOHIg2LJLbAIJpZHJosBK6Zma7BZjWC9s5TaLRZdlGOCJGsUMq T13MbO0wI2&profile_pic=&first_name=Name+3&last_name=Surname+3&email=&phone=&website=&role=методист&description=&delete=

Ajax 应该发送 PUT 或 DELETE 请求,而不是发送带有所有参数的 GET 请求。

我在邮递员上进行了测试,Django 根据需要执行。如果发送了 DELETE,则将用户标记为已删除并返回用户。如果 PUT 只是更新用户并返回更新的用户

我究竟做错了什么?

升级版:

我通过这样做解决了问题:

注意

我不是什么最后的行动解决了问题。我认为使用 Django {% url '...' **params %} 而不是自己拼写 url 不知何故给了我另一个错误,所以我可以更改我的 URL 结构。

标签: jquerydjangoajax

解决方案


确保添加method:'PUT'到 ajax 以进行点赞put request

...
$.ajax({
  ...
  method: 'PUT',
  ...
});

并且 html 表单不能提交为deleteorput


推荐阅读