2014-10-19 67 views
0

我正在構建REST Web服務,GET方法似乎正在工作 但是當涉及到POST錯誤消息時總是顯示: '字典' 對象有 '保存''dict'對象沒有任何屬性'保存'POST不起作用

models.py沒有屬性

from django.db import models 


class Users(models.Model): 
    Fullname = models.CharField(max_length=50) 
    Username = models.CharField(max_length=15) 
    Password = models.CharField(max_length=8) 
    Email = models.CharField(max_length=50, unique=True) 
    Type = models.CharField(max_length=5) 
    TwitterName = models.CharField(max_length=15, unique=True) 
    FacebookName = models.CharField(max_length=15, unique=True) 
    CreationDate = models.DateTimeField() 

serializer.py

class UserSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Users 
     fields = ('Fullname', 'Username', 'Email', 'Password', 'Type', 'TwitterName', 'FacebookName') 

views.py

@api_view(['GET', 'POST']) 
def users_list(request, format=None): 
    if request.method == 'GET': 
     users = Users.objects.all() 
     serializer = UserSerializer(users, many=True) 
     return Response(serializer.data) 

    elif request.method == 'POST': 
     serializer = UserSerializer(request.DATA, many=True) 
     if serializer.is_valid(): 
      serializer.save() 
      return Response(serializer.data, status=status.HTTP_201_CREATED) 
    return Response(serializer.data, status=status.HTTP_400_BAD_REQUEST) 

我使用PyCharm和Django的1.7

+0

你的'UserSerializer'是從字面上縮進的嗎? 「Meta」類應該是'UserSerializer'的嵌套內部類。 – 2014-11-27 18:07:57

回答

1

如果你要保存的POST數據,那麼你應該通過數據data關鍵字參數:

serializer = UserSerializer(data=request.DATA, many=True) 
     if serializer.is_valid(): 
      ... 

另外,我會建議你使用Class based views with Mixins,因爲這將使你的代碼更清晰aner和更短的:

from rest_framework import generics, mixins 

class UserList(mixins.ListModelMixin, 
       mixins.CreateModelMixin, 
       generics.GenericAPIView): 

    queryset = Users.objects.all() 
    serializer_class = UserSerializer 

    def get(self, request, *args, **kwargs): 
     return self.list(request, *args, **kwargs) 

    def post(self, request, *args, **kwargs): 
     return self.create(request, *args, **kwargs) 
+0

我一開始就這樣做了,但後來又發生了另一個錯誤:**'NoneType'對象沒有'save'**屬性,所以我刪除了data = request.DATA並寫入request.DATA – Sara 2014-10-19 12:09:57

+0

我試過使用基於類的視圖我仍然得到同樣的錯誤:**'NoneType'對象沒有'save'屬性**我甚至不確定問題是什麼。 – Sara 2014-10-19 12:22:55

+0

@Sara我不知道你是如何得到這個錯誤。嘗試通過在'.is_valid()'調用之前和之後記錄串行器的值來進行一些調試。 – 2014-10-19 12:42:43

相關問題