Skip to content

Instantly share code, notes, and snippets.

@vimiix
Forked from g00fy-/RESTMiddleware.py
Created January 9, 2018 06:51
Show Gist options
  • Save vimiix/edca90aa28ea6d678df3c8e090b64558 to your computer and use it in GitHub Desktop.
Save vimiix/edca90aa28ea6d678df3c8e090b64558 to your computer and use it in GitHub Desktop.
Simple Django Middleware for handling Form & Multipart Form PUT & DELETE methods AKA REST (GET,POST,PUT,DELETE)
from django.http import QueryDict
from django.http.multipartparser import MultiValueDict
class RESTMiddleware(object):
def process_request(self,request):
request.PUT=QueryDict('')
request.DELETE = QueryDict('')
method = request.META.get('REQUEST_METHOD','').upper() #upper ? rly?
if method == 'PUT':
self.handle_PUT(request)
elif method == 'DELETE':
self.handle_DELETE(request)
def handle_DELETE(self,request):
request.DELETE, request._files = self.parse_request(request)
def handle_PUT(self,request):
request.PUT,request._files = self.parse_request(request)
def parse_request(self,request):
if request.META.get('CONTENT_TYPE', '').startswith('multipart'):
return self.parse_multipart(request)
else:
return (self.parse_form(request), MultiValueDict())
def parse_form(self,request):
return QueryDict(request.raw_post_data)
def parse_multipart(self,request):
return request.parse_file_upload(request.META,request)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment