zoukankan      html  css  js  c++  java
  • django -APIView的使用

    1.APIView的使用:

    1.1 在 user/urls.py 中添加路由

    from django.contrib import admin
    from django.urls import path
    from bookapp.views import *
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('book/cate/', CateView.as_view()),
    
    ]
    

    1.2创建user/serializers.py写序列化器

    from rest_framework import serializers
    from .models import *
    
    
    class Cateser(serializers.ModelSerializer):
        class Meta:
            model = Cate	  #数据库表名
            fields = "__all__" #序列化所有字段      
            #depth = 1  # 外键序列化 添加了这个关联的外键都会查询出来
    
    
    class Bookser(serializers.ModelSerializer):
        class Meta:
            model = Book
            fields = "__all__"
    
    

    1.3 在 user/views.py 中添加视图函数

    from .models import *
    from rest_framework.views import APIView
    from rest_framework.response import Response
    from .sers import *
    
    
    class CateView(APIView):
        # get是查询数据  post是添加数据
        def get(self, request):
            cate = Cate.objects.all()  # 查询所有数据 他是一个查询集
            ser = Cateser(cate, many=True)  # 因为查询的是一个查询集 所以需要些many=True
            return Response(ser.data)
    
        def post(self, request):
            ser = Cateser(data=request.data)
            resp = {}
            if ser.is_valid():
                ser.save()
                resp['code'] = 200
                resp['code'] = ser.data
            else:
                print(ser.errors)
                resp['code'] = 400
                resp['code'] = ser.errors
            return Response(resp)
    
        def put(self, request):  # put 修改数据 完全修改数据  patch 部分修改数据
            # 想要修改的话 需要知道要修改谁 还要知道最新的数据 data=xxx 传递的新的值
            id = request.GET.get('id')
            # first是从查询集中 获取一个model对象
            cate = Cate.objects.filter(id=id).first()  
            # 传递 两个参数 参数1是要修改的数据  参数2是要赋予的新值
            ser = Cateser(instance=cate, data=request.data)  
            resp = {}
            if ser.is_valid():
                ser.save()
                resp['code'] = 200
            else:
                resp['code'] = 400
            return Response(resp)
    
        def delete(self, request):
            # 需要知道删除谁
            id = request.GET.get('id')
            resp = {}
            try:
                Cate.objects.filter(id=id).delete()
                resp['code'] = 200
            except Exception as e:
                print(e)
                resp['code'] = 400
            return Response(resp)
    
    从小白到大神的蜕变~~
  • 相关阅读:
    面试官:你和队友之间选一个淘汰,你怎么选?
    Spring Boot 如何干掉 if else?
    坑爹的 Java 可变参数,把我整得够惨。。
    厉害了,程序员的高考试卷,你能拿几分?
    6个步骤,全方位掌握 Kafka
    程序员逛酒吧,喝酒不是主要的。。
    图解 Java 垃圾回收机制,写得非常好!
    冲上云霄,Dubbo Go!
    人工智能都能写Java了!这款插件让你编程更轻松
    说了多少遍,姿势要对!
  • 原文地址:https://www.cnblogs.com/tjw-bk/p/13854380.html
Copyright © 2011-2022 走看看