'字典'对象没有属性' save' POST不起作用

时间:2014-10-19 11:51:11

标签: python django rest post django-rest-framework

我正在构建一个REST Web服务,GET方法似乎正常工作 但是当涉及POST错误消息时总会显示:     'dict'对象没有属性'save'

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

1 个答案:

答案 0 :(得分:1)

如果要保存POST数据,则应将数据传递给data关键字参数:

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

此外,我建议您使用Class based views with Mixins,因为这样可以使您的代码更清晰,更短:

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)
相关问题