[ django DRF序列化器 ]


安装模块

  • conda install djangorestframework
  • conda install markdown
  • conda install django-filter

一. 配置settings.py注册APPS

- INSTALLED_APPS = [
    ...
     'rest_framework',
    ]

二. 如果打算使用可浏览的API,还需要添加PEST框架的登录和注销视图,将以下内容添加到根目录urls.py文件

urlpatterns = [
    ...
path('api-auth/', include('rest_framework.urls'))
]

三. APP文件下创建一个Serializer.py文件,在文件里填写下列内容

  • 一定要导这个包 from rest_framework.serializers import ModelSerializer
from rest_framework.serializers import ModelSerializer # 模型序列化器导包
from .models import Articles, NoteBook, Chapters  #models.py文件里定义的类导包


class ArticleSerializer(ModelSerializer):
    class Meta:
        model = Articles #实例化
        fields = '__all__' #展示所有字段


class NoteBookSerializer(ModelSerializer):
    class Meta:
        model = NoteBook
        fields = '__all__'


class ChaptersSerializer(ModelSerializer):
    class Meta:
        model = Chapters
        fields = '__all__'

四. 在views.py视图文件里填写下列内容

  • 一定要导这个包 from rest_framework.viewsets import ModelViewSet
from rest_framework.viewsets import ModelViewSet  #模型视图导包
from .models import Articles, NoteBook, Chapters  #models.py文件里定义的类导包
from .serializer import ArticleSerializer, NoteBookSerializer, ChaptersSerializer  #serializer.py文件里定义的类导包


class ArticlesModelViewSet(ModelViewSet):
    queryset = Articles.objects.all() #指定查询集
    serializer_class = ArticleSerializer #指定序列化器


class NoteBookModelViewSet(ModelViewSet):
    queryset = NoteBook.objects.all()
    serializer_class = NoteBookSerializer


class ChaptersModelViewSet(ModelViewSet):
    queryset = Chapters.objects.all()
    serializer_class = ChaptersSerializer

五. 在APP文件的urls.py文件里填写下列内容

  • 一定要导这个包 from rest_framework import routers
from django.contrib import admin
from django.urls import path
from .views import ArticlesModelViewSet, NoteBookModelViewSet, ChaptersModelViewSet  # views.py视图文件里定义的导包类
from rest_framework import routers  # 路由的导包
import re # 正则表达式

route = routers.DefaultRouter()  # 实例化
route.register(r'article', ArticlesModelViewSet) #调用路由的注册方法
route.register(r'notebook', NoteBookModelViewSet) #< r >是反编译
route.register(r'chapter', ChaptersModelViewSet)
print(route.urls)# 打印注册生成的地址列表
urlpatterns = [

]+route.urls