当前位置: 首页 > news >正文

19-Django REST framework-DRF工程搭建

DRF工程搭建

      • 前言
      • 环境安装与配置
        • 安装DRF
        • 注册DRF应用
      • DRF体验
        • 1. 创建序列化器
        • 2. 编写视图
        • 3. 定义路由
        • 4. 运行测试


前言

  • 本篇来学习DRF工程搭建及体验

环境安装与配置

DRF需要以下依赖:

  • Python (2.7, 3.4, 3.5, 3.6, 3.7)
  • Django (1.11, 2.0, 2.1)

DRF是以Django扩展应用的方式提供的,所以我们可以直接利用已有的Django环境而无需从新创建。(若没有Django环境,需要先创建环境安装Django)

安装DRF

pip install djangorestframework

注册DRF应用

INSTALLED_APPS = [
    ...
    'rest_framework',
]

DRF体验

1. 创建序列化器

  • 在book应用中新建serializers.py用于保存该应用的序列化器
# -*- coding: utf-8 -*-
# @Time    : 2022/9/24
# @Author  : 大海

from rest_framework import serializers
from book.models import BookInfo


class BookInfoSerializer(serializers.ModelSerializer):
    """图书数据序列化器"""

    class Meta:
        model = BookInfo  # 指定模型
        fields = '__all__'  # 指定序列化器包含所有字段
  • model :指明该序列化器处理的数据字段从模型类BookInfo参考生成
  • fields: 指明该序列化器包含模型类中的哪些字段,'all’指明包含所有字段

2. 编写视图

  • 在book应用的views.py中创建视图BookInfoViewSet
class BookInfoViewSet(ModelViewSet):
    queryset = BookInfo.objects.all()  # 指定查询集
    serializer_class = BookInfoSerializer  # 指定序列化器
  • queryset :指明该视图集在查询数据时使用的查询集
  • serializer_class: 指明该视图在进行序列化或反序列化时使用的序列化器

3. 定义路由

  • 在book应用的urls.py中定义路由信息
from rest_framework.routers import DefaultRouter

urlpatterns = [
    path('admin/', admin.site.urls),
]

router = DefaultRouter()  # 可以处理视图的路由器
router.register(r'books', views.BookInfoViewSet)  # 向路由器中注册视图集

urlpatterns += router.urls  # 将路由器中的所以路由信息追到到django的路由列表中

4. 运行测试

  • 浏览器访问 http://127.0.0.1:8000/books/
    在这里插入图片描述
  • 查询指定书籍 http://127.0.0.1:8000/books/7/
    在这里插入图片描述

相关文章:

  • CSP-S信息学奥赛考试大纲(提高级)
  • 电源硬件设计----降压-升压(Buck-Boost)变换器基础
  • C语言循环的嵌套、比较、break语句,continue语句
  • 【数据挖掘算法与应用】——数据挖掘导论
  • Java语言高级特性——泛型
  • 混合模拟退火和教与学的鸽群优化算法-附代码
  • Java Agent通灵之术
  • c语言进阶 结构体的声明
  • 深度学习Mask R-CNN等实例分割网络
  • [计算机通信网络]网桥与其作用机理举例详解
  • 缓存相关知识点
  • MyBatis映射配置文件结构、标签详解及SQL语句中参数的获取
  • 【SQL刷题】DAY22----增删改操作专项练习
  • 真实场景下的安全专家各项技能详解
  • 为何以太坊合并很重要?
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • [数据结构]链表的实现在PHP中
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【5+】跨webview多页面 触发事件(二)
  • Laravel核心解读--Facades
  • PHP 的 SAPI 是个什么东西
  • Redis在Web项目中的应用与实践
  • scala基础语法(二)
  • vuex 笔记整理
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 半理解系列--Promise的进化史
  • 排序算法学习笔记
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 使用 Docker 部署 Spring Boot项目
  • 数据科学 第 3 章 11 字符串处理
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 以太坊客户端Geth命令参数详解
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • UI设计初学者应该如何入门?
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #WEB前端(HTML属性)
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (C语言)二分查找 超详细
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (论文阅读30/100)Convolutional Pose Machines
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (四)Controller接口控制器详解(三)
  • (一)Neo4j下载安装以及初次使用
  • (转)树状数组
  • ***检测工具之RKHunter AIDE
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Standard 的管理策略
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NET和.COM和.CN域名区别
  • @Validated和@Valid校验参数区别