REST framework框架的基本组件

restful规范

1)根据method不同,进行不同操作
2)面向资源编程
3)体现版本
4)体现是API
5)最好用https
6)响应式设置状态码
7)条件 ?id=1
8)返回值
9)返回错误信息
10)Hypermedia API

REST framework框架

1)路由
2)视图
3)权限
4)认证
5)访问频率限制
6)序列化
7)分页
8)解析器
9)渲染器
10)版本

视图三部曲

使用混合(mixins)

 1 from rest_framework.views import APIView
 2 from rest_framework.response import Response
 3 from .models import *
 4 from django.shortcuts import HttpResponse
 5 from django.core import serializers
 6 
 7 
 8 from rest_framework import serializers
 9 
10 
11 class BookSerializers(serializers.ModelSerializer):
12       class Meta:
13           model=Book
14           fields="__all__"
15           #depth=1
16 
17 
18 class PublshSerializers(serializers.ModelSerializer):
19 
20       class Meta:
21           model=Publish
22           fields="__all__"
23           depth=1
24 
25 
26 class BookViewSet(APIView):
27 
28     def get(self,request,*args,**kwargs):
29         book_list=Book.objects.all()
30         bs=BookSerializers(book_list,many=True,context={'request': request})
31         return Response(bs.data)
32 
33 
34     def post(self,request,*args,**kwargs):
35         print(request.data)
36         bs=BookSerializers(data=request.data,many=False)
37         if bs.is_valid():
38             print(bs.validated_data)
39             bs.save()
40             return Response(bs.data)
41         else:
42             return HttpResponse(bs.errors)
43 
44 
45 class BookDetailViewSet(APIView):
46 
47     def get(self,request,pk):
48         book_obj=Book.objects.filter(pk=pk).first()
49         bs=BookSerializers(book_obj,context={'request': request})
50         return Response(bs.data)
51 
52     def put(self,request,pk):
53         book_obj=Book.objects.filter(pk=pk).first()
54         bs=BookSerializers(book_obj,data=request.data,context={'request': request})
55         if bs.is_valid():
56             bs.save()
57             return Response(bs.data)
58         else:
59             return HttpResponse(bs.errors)
60 
61 
62 class PublishViewSet(APIView):
63 
64     def get(self,request,*args,**kwargs):
65         publish_list=Publish.objects.all()
66         bs=PublshSerializers(publish_list,many=True,context={'request': request})
67         return Response(bs.data)
68 
69 
70     def post(self,request,*args,**kwargs):
71 
72         bs=PublshSerializers(data=request.data,many=False)
73         if bs.is_valid():
74             # print(bs.validated_data)
75             bs.save()
76             return Response(bs.data)
77         else:
78             return HttpResponse(bs.errors)
79 
80 
81 class PublishDetailViewSet(APIView):
82 
83     def get(self,request,pk):
84 
85         publish_obj=Publish.objects.filter(pk=pk).first()
86         bs=PublshSerializers(publish_obj,context={'request': request})
87         return Response(bs.data)
88 
89     def put(self,request,pk):
90         publish_obj=Publish.objects.filter(pk=pk).first()
91         bs=PublshSerializers(publish_obj,data=request.data,context={'request': request})
92         if bs.is_valid():
93             bs.save()
94             return Response(bs.data)
95         else:
96             return HttpResponse(bs.errors)
使用混合mixins

 

猜你喜欢

转载自www.cnblogs.com/zhaohuhu/p/9134386.html