Django如何简单快速实现PUT、DELETE方法
作者:北方姆Q 时间:2021-04-14 17:53:07
使用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名称哦
]
来源:https://www.cnblogs.com/bfmq/p/8393620.html
标签:django,实现,put,delete,方法
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
python执行等待程序直到第二天零点的方法
2023-08-27 11:49:21
解决在Python编辑器pycharm中程序run正常debug错误的问题
2023-09-09 09:58:39
![](https://img.aspxhome.com/file/2023/6/128206_0s.jpg)
Javascript的时间戳和php的时间戳转换注意事项
2023-11-19 16:12:30
Python使用graphviz画流程图过程解析
2022-06-19 06:45:18
![](https://img.aspxhome.com/file/2023/0/72040_0s.jpg)
Python获取时间的操作示例详解
2023-05-21 07:54:56
![](https://img.aspxhome.com/file/2023/7/109637_0s.png)
python实现报表自动化详解
2021-12-31 04:28:14
![](https://img.aspxhome.com/file/2023/3/123663_0s.jpg)
Python3+selenium实现cookie免密登录的示例代码
2023-01-31 15:43:09
![](https://img.aspxhome.com/file/2023/3/124643_0s.png)
Django REST Framework序列化外键获取外键的值方法
2022-02-23 16:03:14
Pytorch实现List Tensor转Tensor,reshape拼接等操作
2021-06-06 19:58:51
![](https://img.aspxhome.com/file/2023/6/80786_0s.png)
Jupyter notebook在mac:linux上的配置和远程访问的方法
2023-06-20 06:11:01
python用700行代码实现http客户端
2021-12-06 20:32:49
![](https://img.aspxhome.com/file/2023/8/110588_0s.png)
python Kmeans算法原理深入解析
2022-03-01 07:26:55
![](https://img.aspxhome.com/file/2023/8/95548_0s.png)
python3实现读取chrome浏览器cookie
2023-10-18 13:18:44
实例:arguments.callee的应用
2009-04-20 12:38:00
python:print格式化输出到文件的实例
2023-08-25 06:40:53
python之生产者消费者模型实现详解
2021-12-03 14:37:15
Python httplib,smtplib使用方法
2021-12-23 04:34:29
![](https://img.aspxhome.com/file/2023/7/102967_0s.gif)
numpy 数组拷贝地址所引起的同步替换问题
2023-11-07 18:00:06
asp 性能测试报告 学习asp朋友需要了解的东西
2011-03-09 10:57:00
Python中对象迭代与反迭代的技巧总结
2023-06-08 04:25:33