安装模块
- 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