Django REST Framework简单使用

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/

w5qi3F-2qN6q0-

9.2 Students接口

浏览器访问:http://127.0.0.1:8000/api/students/

b9nBkx-LOy9e3-

9.2.1 对Students接口进行操作

9.2.1.1 增加学生

XKtatL-RNPBNm-

点击POST之后:

BfiNDC-zwFLaH-

查看Students所有信息:

q1Kaes-IEcp0D-

9.2.1.2 更新学生信息
  • PUT是更新学生信息(必须填写完整的学生信息)

Icri7M-hnFnSw-

点击PUT之后:

JcsJjH-3UMgm3-

信息中对应的"age"信息已经更改了。

  • PATCH 部分更新,不需要传递所有信息,只需要带上“id”和要更新的信息就可以

Fqari4-IJtHl8-

点击PATCH之后:

7Wr15O-EgJEgs-

部分更新提交之后,下面的窗口中会把更新之后所有的信息都加载进来。

9.2.1.3 删除学生信息

qW7onb-zaxhCy-

点击DELETE在弹出的对话框中确定之后,就可以把该学生的信息删除了:

9iOZOu-EiHLXa-

在所有学生信息列表中也查看不到id为5的这个学生信息:

xlQDjX-lKbSRz-

9.3 Groups接口

浏览器访问:http://127.0.0.1:8000/api/groups/

wwXsb0-XnSYkM-

原文地址:https://www.cnblogs.com/jie-fang/p/13218547.html