Django如何简单快速实现PUT、DELETE方法


Posted in Python onJuly 24, 2019

使用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名称哦
]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python登录并爬取淘宝信息代码示例
Dec 09 Python
python使用TensorFlow进行图像处理的方法
Feb 28 Python
django框架自定义用户表操作示例
Aug 07 Python
python 检查是否为中文字符串的方法
Dec 28 Python
Python如何爬取实时变化的WebSocket数据的方法
Mar 09 Python
python实现kNN算法识别手写体数字的示例代码
Aug 16 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
解决Python spyder显示不全df列和行的问题
Apr 20 Python
Jupyter notebook如何实现指定浏览器打开
May 13 Python
Python ckeditor富文本编辑器代码实例解析
Jun 22 Python
Python unittest如何生成HTMLTestRunner模块
Sep 08 Python
Django限制API访问频率常用方法解析
Oct 12 Python
django一对多模型以及如何在前端实现详解
Jul 24 #Python
详解Python是如何实现issubclass的
Jul 24 #Python
Django中在xadmin中集成DjangoUeditor过程详解
Jul 24 #Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
Jul 24 #Python
Django 创建/删除用户的示例代码
Jul 24 #Python
python3.6+django2.0+mysql搭建网站过程详解
Jul 24 #Python
简单了解python 邮件模块的使用方法
Jul 24 #Python
You might like
php代码审计比较有意思的例子
2014/05/07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
PDO::errorCode讲解
2019/01/28 PHP
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
JavaScript splice()方法详解
2020/09/22 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
js获取UserControl内容为拼html时提供方便
2014/11/02 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
javaScript中slice函数用法实例分析
2015/06/08 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
Vue中的v-cloak使用解读
2017/03/27 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
2019/01/29 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
JavaScript链式调用原理与实现方法详解
2020/05/16 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
浅析Python中return和finally共同挖的坑
2017/08/18 Python
用Python3创建httpServer的简单方法
2018/06/04 Python
python进阶之多线程对同一个全局变量的处理方法
2018/11/09 Python
python实现蒙特卡罗方法教程
2019/01/28 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
护士2014年终工作总结
2014/11/11 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
幼儿园元旦主持词
2015/07/06 职场文书
图片批量处理 - 尺寸、格式、水印等
2022/03/07 杂记