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)
    
    从小白到大神的蜕变~~
  • 相关阅读:
    【RocketMQ之介绍】
    1. JVM体系结构概述
    技术贴
    http协议
    如何在2个小时之内掌握48个国际音标?
    托业全真高频词汇(一)
    三. 托业单词之业务拓展 Business Development
    二、托业单词之人事及管理 Personnel & Management
    一、托业单词之办公室事宜 Office matters
    VUE 之让数字四舍五入
  • 原文地址:https://www.cnblogs.com/tjw-bk/p/13854380.html
Copyright © 2011-2022 走看看