APIView视图的添加与查看

Django -   APIView视图的添加与查看


一、在models.py文件中添加数据模型

class Book(models.Model):
    title = models.CharField(max_length=32,verbose_name="书籍名称")
    price = models.IntegerField(verbose_name="价格")
    pub_date = models.DateField(verbose_name="出版日期")
    
    bread = models.IntegerField(verbose_name="阅读量") 
    bcomment = models.IntegerField(verbose_name="评论量") 
    
    publish = models.ForeignKey("Publish",on_delete=models.CASCADE,verbose_name="出版社")
    # authors = models.ManyToManyField("Author",verbose_name="作者")

    def __str__(self):
        return self.title


class Publish(models.Model):
    name = models.CharField(max_length=32,verbose_name="出版社名称")
    email = models.EmailField(verbose_name="出版社邮箱")

    def __str__(self):
        return self.name


class Author(models.Model):
    name = models.CharField(max_length=32,verbose_name="作者")
    age = models.IntegerField(verbose_name="年龄")

    def __str__(self):
        return self.name


二、使用命令创建表

python manage.py makemigrations
python manage.py migrate

三、在serializers.py创建作者表的序列化器类

class AuthorSerializer(serializers.Serializer):
    name = serializers.CharField(max_length=32)
    age = serializers.IntegerField()

    def create(self,validated_data):
        author_obj = Author.objects.create(**validated_data)
        return author_obj

四、构建 作者表的 增删改查 views.py

class AuthorView(APIView):
    def get(self, request):
        authors = Author.objects.all()  #获取所有数据
        serializer = AuthorSerializer(instance=authors, many=True)   #构建序列化器
        return Response(serializer.data)

    def post(self, request):
        serizlizer = AuthorSerializer(data=request.data)    #反序列化器
        #数据校验
        #验证通过   serializer.data
        #验证不通过  serializer.errors
        if serizlizer.is_valid():
            # Author.objects.create(**serializer.validated_data)   这种原始传入数据的方法
            # return Respons("OK")
            serizlizer.save()
            return Response(serizlizer.data)
        else:
            return Response(serizlizer.errors)


五、构建路由

path("authors/",AuthorView.as_view)

你可能感兴趣的:(python,开发语言,后端,APIView,Django)