1.models.py-->執行數據遷移命令django
ps:模型層中能夠加其餘的,只要不是Field的字類,都不會看成字段去處理app
from django.db import models class Student(models.Model): name = models.CharField(max_length=32) sex = models.SmallIntegerField(choices=((1, '男'), (2, '女'), (3, '未知')), default=1) # hobby=models.CharField(choices=[('1','籃球'),('2','足球')]) age = models.IntegerField()
2.serializer.py 視圖類函數
from rest_framework import serializers from app01.models import Student class StudentSerializer(serializers.ModelSerializer):#Meta方法 class Meta: model = Student fields='__all__'
3.settings.pyurl
INSTALLED_APPS = [ ... 'app01', 'rest_framework' ]
4.urls.pyspa
from django.contrib import admin from django.urls import path from app01 import views from rest_framework.routers import SimpleRouter router=SimpleRouter() router.register('students',views.StudentView) urlpatterns = [ path('admin/', admin.site.urls), # path('students/', views.StudentView.as_view()), # 若是視圖函數繼承了ViewSetMixin或者它的字類,路由方式必須以下 # path('students/', views.StudentView.as_view({'get':'get'})), # 繼承GenericViewSet, ListModelMixin,用此路由 # path('students/', views.StudentView.as_view({'get':'list'})), ] urlpatterns+=router.urls
5.views.py視圖類rest
from django.shortcuts import render # 顯示全部學生的接口 from app01.models import Student from app01.serializer import StudentSerializer from rest_framework.views import APIView from rest_framework.generics import GenericAPIView, ListAPIView from rest_framework.mixins import ListModelMixin from rest_framework.viewsets import ViewSetMixin, ViewSet, GenericViewSet from rest_framework.response import Response ## 方式一 # class StudentView(GenericAPIView, ListModelMixin): # queryset = Student.objects.all() # serializer_class = StudentSerializer # # def get(self, request, *args, **kwargs): # return self.list(request, *args, **kwargs) # 方式二 # class StudentView(ListAPIView): # queryset = Student.objects.all() # serializer_class = StudentSerializer # 方式三 # # class StudentView(ViewSetMixin, APIView): # class StudentView(ViewSet): # 跟上行徹底同樣 # def get(self, request, *args, **kwargs): # student_list = Student.objects.all() # ser = StudentSerializer(student_list, many=True) # # return Response(ser.data) # 方式四 # class StudentView(ViewSetMixin, GenericAPIView): # class StudentView(GenericViewSet): # 跟上行徹底同樣 # queryset = Student.objects.all() # serializer_class = StudentSerializer # def get(self,request, *args, **kwargs): # obj_list=self.get_queryset() # ser=self.get_serializer(obj_list,many=True) # return Response(ser.data) # 方式5 # class StudentView(GenericViewSet,ListModelMixin): # queryset = Student.objects.all() # serializer_class = StudentSerializer # def get(self,request, *args, **kwargs): # return self.list(request, *args, **kwargs) # 方式6 # class StudentView(GenericViewSet, ListAPIView): # queryset = Student.objects.all() # serializer_class = StudentSerializer # 方式7 # class StudentView(GenericViewSet, ListModelMixin): # queryset = Student.objects.all() # serializer_class = StudentSerializer # 沒有get方法,那就把路由配置中get方法變成list,若是要用本身配的路由,那就要寫get方法,詳看方式8 # 方式8 # class StudentView(GenericViewSet, ListModelMixin): # queryset = Student.objects.all() # serializer_class = StudentSerializer # def get(self,request, *args, **kwargs): # return self.list(request, *args, **kwargs) # 方式9 可自動生成路由 # class StudentView(GenericViewSet, ListAPIView): # class StudentView(ViewSetMixin, ListAPIView): # queryset = Student.objects.all() # serializer_class = StudentSerializer ## 最後經常使用方案,自動生成路由 # 方式10 :查詢全部學生和新增一個學生 (這裏記得新增時候serializer視圖類中不能有字段重寫的 get_字段名_display 方法,否則會報錯) from rest_framework.generics import CreateAPIView # class StudentView(ViewSetMixin, ListAPIView,CreateAPIView): # queryset = Student.objects.all() # serializer_class = StudentSerializer