w8484855@qq.com 发表于 2017-8-12 14:34:19

Django处理PUT/DELETE请求


本文和大家分享的主要是django中处理PUT/DELETE请求的相关内容,一起来看看吧,希望对大家学习django有所帮助。
  Django处理PUT请求有几个点需要注意:
  CSRF配置
  为了防止跨站攻击,Django默认会对POST/PUT/DELETE这几种操作进行csrf token检查。POST可以将其放到post的参数中,但Django对PUT/DELETE只能通过检查Header的方式检查csrf token。
  所以应当在HTML中确认发送之前配置了Ajax的头:
  function csrfSafeMethod(method) {
  // these HTTP methods do not require CSRF protection
  return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
  }
  $.ajaxSetup({
  beforeSend: function(xhr, settings) {
  if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
  xhr.setRequestHeader("X-CSRFToken", csrftoken);
  }
  }
  });
  通过Ajax发送PUT/DELETE请求
  需要注意的几个地方:
  1.设置type为PUT,DELETE同理
  2.url必须以/结尾
  $.ajax({
  url: dbUrl + tableName + "/",   // Append back slash for put request
  type: "PUT",
  data: {"key": key, "field": field, "field-value": input.value},
  success: function(result) {
  input.style.backgroundColor = "#b3ffb3";
  },
  error: function(event, XMLHttpRequest, ajaxOptions, thrownError) {
  input.style.backgroundColor = "#ffad99";
  input.value = oldValue
  }
  });
  后台处理参数
  Django对于PUT/DELETE请求并没有像POST/GET那样有一个字典结构。我们需要手动处理request.body获取参数:
  put = QueryDict(request.body)
  key = put.get('key')
  field = put.get('field')
  field_value = put.get('field-value')


来源:简书
页: [1]
查看完整版本: Django处理PUT/DELETE请求