04.环境安装与使用
# 01.安装djangorestframework
- DRF框架依赖于Django,
需要先安装Django环境,再安装djangorestframework
pip install djangorestframework==3.11.0 # 安装djangorestframework
pip install django-filter==2.3.0 # 安装过滤器
1
2
2
- 创建django环境
# ① 创建一个名为django2.2的虚拟环境
mkvirtualenv -p python django2.2
# ② 进入django2.2虚拟环境
workon django2.2
# ③ 安装Django环境
pip install Django==2.2.5
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 02.DRF配置
# 2.1 创建一个测试项目
(django2.2) C:\Users\Lenovo> cd C:\tmp
(django2.2) C:\tmp> django-admin startproject drf_demo
(django2.2) C:\tmp\drf_demo> python manage.py startapp book
1
2
3
2
3
# 2.2 DRF应用注册
- setting.py中注册djangorestframework
INSTALLED_APPS = [
'rest_framework', # 注册 djangorestframework
'book.apps.BookConfig', # 注册刚刚创建的APP:book
]
1
2
3
4
2
3
4
# 2.3 路由分发
drf_demo/urls.py
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('book/', include(('book.urls', 'book'), namespace='book')),
]
1
2
3
4
5
6
7
2
3
4
5
6
7
# 2.4 定义模型
from django.db import models
#定义图书模型类BookInfo
class BookInfo(models.Model):
btitle = models.CharField(max_length=20, verbose_name='名称')
bpub_date = models.DateField(verbose_name='发布日期')
bread = models.IntegerField(default=0, verbose_name='阅读量')
bcomment = models.IntegerField(default=0, verbose_name='评论量')
is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')
class Meta:
db_table = 'tb_books' # 指明数据库表名
verbose_name = '图书' # 在admin站点中显示的名称
verbose_name_plural = verbose_name # 显示的复数名称
def __str__(self):
"""定义每个数据对象的显示信息"""
return self.btitle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- 创建表
(django2.2) C:\tmp\drf_demo> python manage.py makemigrations
(django2.2) C:\tmp\drf_demo> python manage.py migrate
1
2
2
# 03.DRF框架功能演示
# 3.1 步骤1:创建序列化器类
- 在
book
应用中新建serializers.py
用于保存所要创建的序列化器类。
from rest_framework import serializers
from book.models import BookInfo
class BookInfoSerializer(serializers.ModelSerializer):
"""图书序列化器类"""
class Meta:
model = BookInfo
fields = '__all__'
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
小知识:
- model:指定该序列化器类所对应的模型类
- fields:指定依据模型类的哪些字段生成对应序列化器类的字段,__all__代表所有
# 3.2 步骤2:编写视图
book/views.py
from rest_framework.viewsets import ModelViewSet
from book.serializers import BookInfoSerializer
from book.models import BookInfo
class BookInfoViewSet(ModelViewSet):
"""视图集"""
queryset = BookInfo.objects.all()
serializer_class = BookInfoSerializer
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
小知识:
- queryset:指定视图在进行数据查询时所使用的查询集
- serializer_class:指定视图在进行序列化或反序列化时所使用的序列化器类
# 3.3 步骤3:定义路由
book/urls.py
from django.urls import re_path
from book import views
urlpatterns = [
]
# 路由Router
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register('books', views.BookInfoViewSet, basename='books')
urlpatterns += router.urls
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
小知识:什么是路由Router?
答:动态生成视图集中的处理方法的url配置项。
# 3.4 步骤四:测试接口
# 4.1 测试获取所有图书接口
http://127.0.0.1:8000/book/book/
1
- 返回结果
{
"code": 0,
"msg": "success",
"books": [
{
"id": 1,
"btitle": "西游记",
"bpub_date": "2020-08-11",
"bread": 1234,
"bcomment": 779
},
{
"id": 2,
"btitle": "红楼梦",
"bpub_date": "2020-09-19",
"bread": 123,
"bcomment": 5555
},
{
"id": 3,
"btitle": "水浒传",
"bpub_date": "2020-02-12",
"bread": 100,
"bcomment": 0
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 4.2 测试创建图书接口
# 4.3 测试修改图书接口
http://127.0.0.1:8000/book/book/1/
1
# 4.4 测试删除数据接口
http://127.0.0.1:8000/book/book/1/
1
上次更新: 2024/3/13 15:35:10