I'm having a lot difficulty accessing the post request data sent from my Angular server. Somehow Response(data) still returns the body of my post request accurately, however I can't access the content inside to create instance of my model. Below is my code
Angular end:
let header = new HttpHeaders({
'Authorization': ' JWT ' + this.authToken,
'Content-Type': 'application/json',
});
let body = {
"var1": var1,
"var2": var2,
};
return new Promise(resolve => {
this.http.post(this.server, body, {headers: header, withCredentials: true}).subscribe(data => {
console.log(data);
resolve(data);
}, err => {
console.log(err);
});
});
Django
@api_view(['POST'])
@parser_classes((JSONParser,))
def order_processing(request):
permission_classes = (permissions.IsAuthenticated,)
data = request.data
item = Item.create(data["var1"])
item.save()
return Response(data)
and I always end up getting the error:
TypeError at /post/↵create() missing 1 required positional argument:
which I think is due to data["var1"] being unavailable. Item is my custom model.
class Item(models.Model):
# Fields
var1 = models.TextField(editable=False)
# Methods
def __str__(self):
return self.var1
def create(self, var1):
order = self.create(var1=var1)
return order
On my localhost, I tried to use httpie to request and both Querydict and request.data are empty. But then Response(data) on my deployed server is still able to return the correct body so I don't know what exactly is the problem with it.
Any help would be appreciated.
createmethod inModelManager, putting acreatemethod on the instance will only confuse everyone. Better to stick to the framework's conventions.