Django -APIView的使用

1.APIView的使用:

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

1
2
3
4
5
6
7
8
9
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写序列化器

1
2
3
4
5
6
7
8
9
10
11
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 中添加视图函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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)

请我喝杯咖啡吧~

支付宝
微信