【问题标题】:Can't receive data value with a PUT Ajax request in a django view无法在 django 视图中使用 PUT Ajax 请求接收数据值
【发布时间】:2019-11-16 16:07:23
【问题描述】:

我正在执行 PUT Ajax 请求,发送数据参数中的值,但我的 django 视图中没有收到任何数据。

这是我的代码:

function wordUpdate(){
    $.ajax({
        url:'/socialanalyzer/dictionary_update/',
        headers: { "X-CSRFToken": $.cookie("csrftoken") },
        type: 'PUT',
        data: {
                word_id: temporalWordToEdit
        },success: function(data) {
              if (data.code==200) {
                alertify.success('Word modified successfully');
                var delayInMilliseconds = 2000;
                setTimeout(function() {
                  location.reload(true);
                }, delayInMilliseconds);
              }else{
                console.log('Error, status:',data.code);
                alertify.error('Error updating the word');
              }
            }
        })
}

views.py

def put(self, request, *args, **kwargs):
    try:
        if request.method == 'PUT' and request.is_ajax():
        import pdb;pdb.set_trace()

我是否正确传递了这个?这应该可行,但我收到空数据:

(Pdb) request.GET
<QueryDict: {}>

我也尝试使用 JSON.stringify 函数发送数据,但得到相同的结果:

    var word_id = { 'word_id': temporalWordToEdit };
    $.ajax({
        url:'/socialanalyzer/dictionary_update/',
        headers: { "X-CSRFToken": $.cookie("csrftoken") },
        type: 'PUT',
        data: JSON.stringify(word_id)

我收到了值,但我没有将其作为数据发送,而是直接在 url 中发送,如下所示:

        url:'/socialanalyzer/dictionary_update/?word_id='+temporalWordToEdit,
(Pdb) request.GET
<QueryDict: {'word_id': ['1']}>

我不知道这是正确的方法还是我做错了什么。我了解在 PUT 请求中,您尝试更新实例,但是在 url 中而不是在 data 参数中发送 id 实例是正确的?

提前感谢,任何帮助将不胜感激

【问题讨论】:

    标签: django ajax put


    【解决方案1】:

    我找到了自己问题的答案。根据thread,在 PUT Ajax 请求中,参数作为正文发送,而不是作为查询字符串发送,所以在 django 中我得到的值是这样的:request.body

    【讨论】:

      猜你喜欢
      • 2020-08-18
      • 2012-04-14
      • 2021-05-03
      • 2015-02-02
      • 2011-03-01
      • 2021-01-30
      • 2019-11-26
      • 1970-01-01
      • 2020-02-28
      相关资源
      最近更新 更多