pip install django==2.1.5
pip install djangorestframework==3.8.2
django-admin startproject my_drf
cd my_drf
python manage.py startapp app01
app01/models.py
from django.db import models
# Create your models here.
class Group(models.Model):
name = models.CharField(verbose_name="小组名称", max_length=5)
def __str__(self):
return self.name
class Student(models.Model):
name = models.CharField(verbose_name="学生名字", max_length=10)
age = models.IntegerField(verbose_name="学生年龄")
group = models.ForeignKey(to=Group, on_delete=models.CASCADE)
def __str__(self):
return self.name
app01/serializers.py
from rest_framework.serializers import HyperlinkedModelSerializer
from .models import Group, Student
class GroupSerializers(HyperlinkedModelSerializer):
class Meta:
model = Group # 要序列化的类
fields = (‘id‘, ‘name‘) # 序列化的字段
class StudentSerializers(HyperlinkedModelSerializer):
class Meta:
model = Student # 要序列化的类
fields = (‘id‘, ‘name‘, ‘age‘, ‘group‘) # 序列化的字段
app01/views.py
from rest_framework import viewsets
from .models import Group, Student
from .serializers import GroupSerializers, StudentSerializers
class StudentViewSet(viewsets.ModelViewSet):
queryset = Student.objects.all() # 指定要序列化的数据
serializer_class = StudentSerializers # 指定要使用的序列化类
class GroupViewSet(viewsets.ModelViewSet):
queryset = Group.objects.all() # 指定要序列化的数据
serializer_class = GroupSerializers # 指定要使用的序列化类
my_drf/urls.py
from django.contrib import admin
from django.urls import path, include
# 通过rest_framework自带的路由配置创建路由
from rest_framework.routers import DefaultRouter
from app01 import views
router = DefaultRouter()
# 注册路由
router.register(r‘students‘, views.StudentViewSet)
router.register(r‘groups‘, views.GroupViewSet)
urlpatterns = [
path(‘admin/‘, admin.site.urls),
# 配置路由入口
path(‘api/‘, include(router.urls)),
]
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
浏览器访问:http://127.0.0.1:8000/api/
浏览器访问:http://127.0.0.1:8000/api/students/
点击POST之后:
查看Students所有信息:
点击PUT之后:
信息中对应的"age"信息已经更改了。
点击PATCH之后:
部分更新提交之后,下面的窗口中会把更新之后所有的信息都加载进来。
点击DELETE在弹出的对话框中确定之后,就可以把该学生的信息删除了:
在所有学生信息列表中也查看不到id为5的这个学生信息:
浏览器访问:http://127.0.0.1:8000/api/groups/
原文:https://www.cnblogs.com/jie-fang/p/13218547.html