1、安装各种组件
pip install django==2.1.5
pip install djangorestframework==3.8.2
2、创建Django项目
django-admin startproject my_drf
cd my_drf
python manage.py startapp app01
- 注册APP和rest_framework
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'app01',
]
3、创建数据模型
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
4、创建序列化类
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') # 序列化的字段
5、创建视图类
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 # 指定要使用的序列化类
6、配置url
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)),
]
7、迁移数据库
python manage.py makemigrations
python manage.py migrate
8、运行本地服务
python manage.py runserver
9、浏览器访问
9.1 API入口
浏览器访问:http://127.0.0.1:8000/api/
9.2 Students接口
浏览器访问:http://127.0.0.1:8000/api/students/
9.2.1 对Students接口进行操作
9.2.1.1 增加学生
点击POST之后:
查看Students所有信息:
9.2.1.2 更新学生信息
- PUT是更新学生信息(必须填写完整的学生信息)
点击PUT之后:
信息中对应的"age"信息已经更改了。
- PATCH 部分更新,不需要传递所有信息,只需要带上“id”和要更新的信息就可以
点击PATCH之后:
部分更新提交之后,下面的窗口中会把更新之后所有的信息都加载进来。
9.2.1.3 删除学生信息
点击DELETE在弹出的对话框中确定之后,就可以把该学生的信息删除了:
在所有学生信息列表中也查看不到id为5的这个学生信息: