PhoneGap中文网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 115|回复: 0

Django处理PUT/DELETE请求

[复制链接]

87

主题

87

帖子

327

积分

中级会员

Rank: 3Rank: 3

积分
327
发表于 2017-8-12 14:34:19 | 显示全部楼层 |阅读模式

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


来源:简书
it营
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|PhoneGap中文网 ( 京ICP备13027796号-1

GMT+8, 2017-10-22 03:19 , Processed in 0.169062 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表