不做大哥好多年 不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核

逍遥子

不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核
  • python基础

  • python模块

  • django

    • 01_Django基础

    • 02_Model数据库操作

    • 03_DRF框架

      • 01.web开发两种模式
      • 02.Restful风格
      • 03.DRF框架作用
      • 04.环境安装与使用
        • 01.安装djangorestframework
        • 02.DRF配置
          • 2.1 创建一个测试项目
          • 2.2 DRF应用注册
          • 2.3 路由分发
          • 2.4 定义模型
        • 03.DRF框架功能演示
          • 3.1 步骤1:创建序列化器类
          • 3.2 步骤2:编写视图
          • 3.3 步骤3:定义路由
          • 3.4 步骤四:测试接口
          • 4.1 测试获取所有图书接口
          • 4.2 测试创建图书接口
          • 4.3 测试修改图书接口
          • 4.4 测试删除数据接口
      • 05.Serializer
      • 06.ModelSerializer
      • 07.APIView
      • 08.初始化项目结构
      • 09.ModelViewSet
    • 04_部署

  • flask

  • SYL

  • Celery

  • 微服务

  • python
  • django
  • 03_DRF框架
xiaonaiqiang
2021-02-17
目录

04.环境安装与使用

# 01.安装djangorestframework

  • DRF框架依赖于Django,需要先安装Django环境,再安装djangorestframework
pip install djangorestframework==3.11.0        # 安装djangorestframework
pip install django-filter==2.3.0             # 安装过滤器
1
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

# 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.2 DRF应用注册

  • setting.py中注册djangorestframework
INSTALLED_APPS = [
    'rest_framework',             # 注册 djangorestframework
    'book.apps.BookConfig',         # 注册刚刚创建的APP:book
]
1
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.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
  • 创建表
(django2.2) C:\tmp\drf_demo>   python manage.py makemigrations
(django2.2) C:\tmp\drf_demo>   python manage.py migrate
1
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

小知识:

  • 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

小知识:

  • 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
  • 小知识:什么是路由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

# 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
03.DRF框架作用
05.Serializer

← 03.DRF框架作用 05.Serializer→

最近更新
01
04.数组双指针排序_子数组
03-25
02
08.动态规划
03-25
03
06.回溯算法
03-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 逍遥子 技术博客 京ICP备2021005373号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式