天使爱美丽

“TA还未设置签名”

笔记

Django学习之PUT/DELETE请求处理方法详解

已有 26 次阅读2017-08-12 14:33 |系统分类:HTML/CSS |

本文和大家分享的主要是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')



来源:简书


标签: 举报

收藏 0人收藏
给个赞0人点赞
评论
0 /300