使用django的小伙伴们应该都知道我们是无法开心的处理PUT跟DELETE的

 $.ajax({
url: 'XXX',
type: 'PUT',
dataType: 'json',
data: {
's': $("#select-id").find("option:selected").text()
},
success: function (data) {
console.log('ok');
}
})
 def func(request):
if request.method == 'GET':
s = request.GET.get('s', None)
return XXX
elif request.method == 'POST':
s = request.POST.get('s', None)
return XXX
elif request.method == 'PUT':
s = request.PUT.get('s', None) # 我们希望愉快的获取继续处理
return XXX
elif request.method == 'DELETE':
s = request.DELETE.get('s', None) # 我们希望愉快的获取继续处理
return XXX
else:
pass

很不幸,在默认情况下,我们不能很轻易的根据restful来写url,但是,懒癌的威力是无穷大的!机智的小北方通过查阅资料以及自定义修改实现了使用中间件来达成次目的

首先我们需要在django里某个app下添加一个中间件py文件,命名随意,这里我叫middleware

 #!/usr/bin/env python
# -*- coding:utf8 -*-
# __author__ = '北方姆Q' from django.http import QueryDict
try:
from django.utils.deprecation import MiddlewareMixin # 1.10.x
except ImportError:
MiddlewareMixin = object # 1.4.x-1.9.x class HttpPost2HttpOtherMiddleware(MiddlewareMixin):
def process_request(self, request):
"""
可以继续添加HEAD、PATCH、OPTIONS以及自定义方法
HTTP_X_METHODOVERRIDE貌似是以前版本的key???
:param request: 经过原生中间件处理过后的请求
:return:
"""
try:
http_method = request.META['REQUEST_METHOD']
if http_method.upper() not in ('GET', 'POST'):
setattr(request, http_method.upper(), QueryDict(request.body))
# except KeyError:
# http_method = request.META['HTTP_X_METHODOVERRIDE']
# if http_method.upper() not in ('GET', 'POST'):
# setattr(request, http_method.upper(), QueryDict(request.body))
except Exception:
pass
finally:
return None

然后在django的settings里注册此中间件就好了

 MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'yourappname.middleware.HttpPost2HttpOtherMiddleware', # 改成自己的app名称哦
]

Django简单快速实现PUT、DELETE方法的更多相关文章

  1. 一种简单快速的模板解析方法,活用with javascript版

    //一种简单快速的模板解析方法,活用with var parseTpl = function( str, data ) { var tmpl = 'var __p=[];' + 'with(obj|| ...

  2. win8.1简单快速安装phpnow的方法

    工具/原料 phpnow 1.5.6 管理员身份登陆系统 方法/步骤   下载phpnow 这是必须的,大家可以自行百度下载,然后我们将phpnow放到一个文件夹,可以是根目录,也可以不是,但一定要知 ...

  3. CocoaPods 的简单快速安装方法

    CocoaPods 的简单快速安装方法(Setting up CocoaPods master repo 卡着不动,是因为淘宝镜像已经不能用了. 一.git clone方法安装cocoapods 镜像 ...

  4. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 对外不要提供Delete方法加强软件的安全性

    1:软件系统一般不怕外面的人,最怕有内鬼.2:软件系统不怕一万,就怕万一,最好不要对外有漏洞,能不提供Delete方法就不提供.3:特别是不要有能远程调用的Delete方法,那就是出了事情都无法找到是 ...

  5. Linux下最快速共享目录的方法

    Linux下最快速共享目录的方法 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 搭建FTP,或者是搭建网络文件系统,这 ...

  6. day03 Django目录结构与reques对象方法

    day03 Django目录结构与reques对象方法 今日内容概要 django主要目录结构 创建app注意事项(重点) djago小白必会三板斧 静态文件配置(登录功能) requeste对象方法 ...

  7. ASP.NET MVC 5 - 查询Details和Delete方法

    在这部分教程中,接下来我们将讨论自动生成的Details和Delete方法. 查询Details和Delete方法 打开Movie控制器并查看Details方法. public ActionResul ...

  8. oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)

    oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录) 分类: ORACLE 数据库 2011-05-24 16:39 8427人阅读 评论(2) 收藏 举报 oracledel ...

  9. ASP.NET MVC 学习8、Controller中的Detail和Delete方法

    参考:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-details-and ...

随机推荐

  1. YII框架学习(一)

    1.安装: windows:将php命令所在的文件夹路径加入到环境变量中,通过cmd命令:进入yii框架中的framework目录,执行: php yiic webapp ../cms linux:类 ...

  2. ios - UISearchBar输入框背景色

    //输入框背景色 bar.searchBarStyle = UISearchBarStyleMinimal; [bar positionAdjustmentForSearchBarIcon:UISea ...

  3. 解决UICollectionView的Cell复用引起的布局混乱问题

    解决UICollectionView的Cell复用引起的布局混乱问题   问题复现.gif 查了一下度娘发现没有好的解决办法,于是发动自己的聪明才智,终于找到如下解决办法(充分证明了自己动手丰衣足食啊

  4. UFLDL教程

    http://ufldl.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B

  5. grok表达式

    grok表达式 grok其实就是封装了各种常用的正则表达式,屏蔽了直接写正则的复杂性:通过它可以提取日志内容,按照自己指定的格式输出到kibana. http://udn.yyuap.com/doc/ ...

  6. Project Structure 讲解(转)

    项目的左侧面板 项目设置->Project Project Settings -> Modules Sources面板 Paths面板 dependencies面板 Project Set ...

  7. An Overview of Query Optimization in Relational Systems

    An Overview of Query Optimization in Relational Systems

  8. combination_m_n

    def combination_2_n(l): n, r = len(l), [] for i in range(0, n, 1): s = i + 1 for ii in range(s, n, 1 ...

  9. 一阶 斜率 二阶 原函数的粗糙度 roughness

    1 2 损失函数+惩罚函数 2阶导数

  10. Bloom Filters

    http://pages.cs.wisc.edu/~cao/papers/summary-cache/node8.html A Bloom filter is a method for represe ...