DRF框架--用django实现REST标准接口

响应数据: JSON

# 列表视图: 路由后面没有pk/ID

# 详情视图: 路由后面pk/ID

复制代码
from django.shortcuts import render

# Create your views here.


from django.views import View

class BookListView(View):
    '''列表视图'''
    def get(self,request):
        '''查询所有图书接口'''
        pass

    def post(self,request):
        '''新增图书接口'''
        # 获取前端传入的请求体数据(json) request.body
        json_str_bytes = request.body
        # 将bytes类型的json字符串转换成json_str
        json_str = json_str_bytes.decode()
        # 利用json.loads将json字符串转换成json(字典或列表)
        book_dict = json.loads(json_str)
        # 创建模型对象并保存(将字典转换成模型并存储)
        book = BookInfo(
            btitle = book_dict['btitle'],
            bpub_date = book_dict['bpub_date']
        )
        book.save()
        # 响应(将新增的数据再响应回去,201)
        json_dict = {
            'id': book.id,
            'btitle': book.title,
            'bpub_date': book.bpub_date,
            'bread': book.read
        }
        return JsonResponse(json_dict,status=201)


class BookDetailView(View):
    '''详情视图'''
    def get(self,request,pk):
        '''查询指定某个图书接口'''
        # 1.获取指定pk的模型对象
        try:
            book = BookInfo.objects.get(id=pk)
        except BookInfo.DoesNotExist:
            return HttpResponse({'message':'查询的数据不存在'},status=404)
        # 2.模型对象转字典
        book_dict = {
            'id': book.id,
            'btitle': book.title,
            'bpub_date': book.bpub_date,
            'bread': book.read
        }
        # 3.响应
        return JsonResponse(book_dict)

    def put(self,request,pk):
        '''指定图书修改接口'''
        pass

    def delete(self,request,pk):
        '''指定图书删除接口'''
        pass
复制代码
  • 之所以写两个视图类,是因为有两个get函数,无法放到一个视图类中
  • 同样,因为第二个详情视图类是需要pk参数的,所以也需要另外写一个视图类

 

posted @   EricYJChung  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示