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)