Django如何簡單快速實現(xiàn)PUT、DELETE方法
使用django的小伙伴們應(yīng)該都知道我們是無法開心的處理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) # 我們希望愉快的獲取繼續(xù)處理
return XXX
elif request.method == 'DELETE':
s = request.DELETE.get('s', None) # 我們希望愉快的獲取繼續(xù)處理
return XXX
else:
pass
很不幸,在默認(rèn)情況下,我們不能很輕易的根據(jù)restful來寫url,但是,懶癌的威力是無窮大的!機(jī)智的小北方通過查閱資料以及自定義修改實現(xiàn)了使用中間件來達(dá)成次目的
首先我們需要在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):
"""
可以繼續(xù)添加HEAD、PATCH、OPTIONS以及自定義方法
HTTP_X_METHODOVERRIDE貌似是以前版本的key???
:param request: 經(jīng)過原生中間件處理過后的請求
: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名稱哦 ]
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python使用Windows的wmic命令監(jiān)控文件運(yùn)行狀況,如有異常發(fā)送郵件報警
這篇文章主要介紹了python使用Windows的wmic命令監(jiān)控文件運(yùn)行狀況,如有異常發(fā)送郵件報警的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-01-01
淺談pandas中Dataframe的查詢方法([], loc, iloc, at, iat, ix)
下面小編就為大家分享一篇淺談pandas中Dataframe的查詢方法([], loc, iloc, at, iat, ix),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04

