访问Angular服务器发送的发帖请求数据时遇到很多困难。不知何故,Response(data)仍然可以准确地返回我的发帖请求的主体,但是我无法访问其中的内容来创建模型实例。 下面是我的代码
角端:
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)
并且我总是最终得到错误:
TypeError at /post/↵create() missing 1 required positional argument:
我认为是由于data [“ var1”]不可用。项目是我的自定义模型。
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
在我的本地主机上,我尝试使用httpie进行请求,而Querydict和request.data均为空。但是部署的服务器上的Response(data)仍然能够返回正确的主体,因此我不知道它到底是什么问题。
任何帮助将不胜感激。
答案 0 :(得分:1)
正如我在评论中提到的那样-您的create方法不是classmethod。因此,您不能像以前那样称呼它。因为只能在实例上调用它。
但是,创建工作不会像您希望的那样进行。
执行此操作:
item = Item.objects.create(var1=data['var1'])
这将创建项目。
还有另一件事:
您的permission_classes
什么也没做。
相反,导入装饰器:
from rest_framework.decorators import permission_classes
并将其更改为:
@api_view(['POST'])
@permission_classes((permissions.IsAuthenticated,))
@parser_classes((JSONParser,))
def order_processing(request):
....