I'm having trouble with posting to my API and can't quite figure out what the error is referring to. If it matters, I'm using Django REST and included the traceback.
if (repeat == false) {
post_data = {'User': usernameInput}
$.ajax({
type: 'POST',
url: '/0/addUser',
data: post_data,
async: true
})
}
class AddUser(APIView):
def post(self, request, format = None):
serializer = UserSerializer(data=request.data)
if serializer.isvalid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
Traceback:
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Library/Python/2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view
57. return view_func(*args, **kwargs)
File "/Library/Python/2.7/site-packages/django/views/generic/base.py" in view
69. return self.dispatch(request, *args, **kwargs)
File "/Library/Python/2.7/site-packages/rest_framework/views.py" in dispatch
403. response = self.handle_exception(exc)
File "/Library/Python/2.7/site-packages/rest_framework/views.py" in dispatch
400. response = handler(request, *args, **kwargs)
File "/Users/rae/Desktop/112/djangotemplate/notes/views.py" in post
23. serializer = UserSerializer(data=request.data)
File "/Library/Python/2.7/site-packages/rest_framework/request.py" in __getattr__
436. return getattr(self._request, attr)
Django REST Framework has its own
Request
object that wraps theHttpRequest
object passed in by Django and adds some additional functionality (like custom rendering and another authentication layer). If any properties are accessed on theRequest
object that don't exist, it will automatically proxy it to the underlyingHttpRequest
, so typically you don't notice the difference.In DRF 2.x, the
Request
property hasDATA
andFILES
properties that store the passed in data as well as any files which have been detected. These were combined in DRF 3.0 and replaced with a singledata
property. As DRF 3.0 has been released, all of the documentation now reflects the newRequest.data
property.You appear to be using Django REST Framework 2.x, but you are trying to access the new property introduced in DRF 3.0. Because it doesn't exist on the
Request
object, it is being proxied down to theHttpRequest
object, where it also isn't being found.