Django Rest framework视图-----APIView

模型类:

# 书籍信息模型
class BookInfo(models.Model):
    btitle = models.CharField(max_length=20, verbose_name='名称')  # 图书名称
    bpub_date = models.DateField(verbose_name='发布日期')  # 发布日期
    bread = models.IntegerField(default=0, verbose_name='阅读量')  # 阅读量
    bcomment = models.IntegerField(default=0, verbose_name='评论量')  # 评论量
    isDelete = models.BooleanField(default=False, verbose_name='逻辑删除')  # 逻辑删除
    logo = models.ImageField(upload_to='booktest', verbose_name='图片', null=True)

    def __str__(self):
        return self.btitle

    # 元类信息 : 修改表名
    class Meta:
        db_table = 'tb_books'
        verbose_name = '图书'
        verbose_name_plural = verbose_name

模型类序列化器:

class BookInfoModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = BookInfo
        fields = '__all__'

APIView视图:

from django.http import JsonResponse
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import BookInfo, HeroInfo
from .serializers import BookInfoSerializer

# GET /books/
class BookListAPIView(APIView):
    def get(self, request):
        # 数据库查询
        queryset = BookInfo.objects.all()

        # todo:手动序列化操作,需要继承django中的view
        # books_list = []
        # for book in queryset:
        #     books_list.append({
        #         'id': book.id,
        #         'btitle': book.btitle,
        #         'bpub_date': book.bpub_date,
        #         'bread': book.bread,
        #         'bcomment': book.bcomment,
        #         'logo': book.logo
        #     })
        # return JsonResponse(books_list)

        # todo:使用序列化器
        # 1.构建序列化器对象,进行序列化操作
        serializer = BookInfoSerializer(queryset, many=True)
        # 2.获取序列化数据
        data = serializer.data
        # 3. 返回
        return Response(data=data)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值