第一步:安装DRF

DRF需要以下依赖:

  • Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6)

  • Django (1.10, 1.11, 2.0)

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

pip install djangorestframework

第二步:添加rest_framework应用

在**settings.py**的**INSTALLED_APPS**中添加'rest_framework'。

INSTALLED_APPS = [
...
'rest_framework',
]

第三步:在新建的app  book下的models.py文件中创建Book模型类,并注册到 INSTALLED_APPS 中去

from django.db import models

# Create your models here.
class Book(models.Model):
id=models.AutoField(primary_key=True)
title=models.CharField(max_length=64)
state=models.BooleanField()
pub_date=models.DateField()
price=models.DecimalField(max_digits=6,decimal_places=2)
publish=models.CharField(max_length=64)

第四步:执行数据库迁移形成数据库,并往其中添加数据

python manage.py makemigration

python manage.py migrate

添加数据:在python的终端(Python Console) 这个终端进行
from .mode import Book
Book.objects.create(title="")。。。。

得到如下数据:

第五步:创建序列化器

在book应用目录中新建serializers.py用于保存该应用的序列化器。

创建一个BookInfoSerializerr用于序列化与反序列化。

from rest_framework import serializers  # 倒入模块

from book.models import Book
class BookInfoSerializer(serializers.ModelSerializer):
class Meta:
model=Book
fields="__all__" # - **model** 指明该序列化器处理的数据字段从模型类BookInfo参考生成
# - **fields** 指明该序列化器包含模型类中的哪些字段,'__all__'指明包含所有字段

第六步:编写视图函数,在book这个app下的views.py文件中创建视图BookInfoViewSet,这是一个视图集合

# 序列化器的使用
from rest_framework.viewsets import ModelViewSet
from .serializers import BookInfoSerializer
from .models import Book class BookInfoViewSet(ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookInfoSerializer ''''
- **queryset** 指明该视图集在查询数据时使用的查询集
- **serializer_class** 指明该视图在进行序列化或反序列化时使用的序列化器
'''

第七步:定义路由,在book这个app下新建urls.py文件。并写入路由文件

from . import views
from rest_framework.routers import DefaultRouter urlpatterns=[ ]
router=DefaultRouter() # 括号不要忘了 ,不然执行不了
router.register(r"book",views.BookInfoViewSet) urlpatterns+=router.urls

第八步:在总的项目路由中也要定义路由

urlpatterns = [
path('admin/', admin.site.urls),
path('', include("book.urls")), # 这个是book应用的序列化路由使用的 ]

第九步:在项目的终端启动项目

python3 manage.py runserver

之后访问对应url,即可看到如下

点击 "http://127.0.0.1:8000/book/"   即可看到:所提供的api接口

一个DRF框架的小案例的更多相关文章

  1. JavaWeb_(Struts2框架)Ognl小案例查询帖子

    此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...

  2. 一个简单的Maven小案例

    Maven是一个很好的软件项目管理工具,有了Maven我们不用再费劲的去官网上下载Jar包. Maven的官网地址:http://maven.apache.org/download.cgi 要建立一个 ...

  3. SSM框架CRUD小案例

    1.数据库准备 部门tbl_dept 员工tbl_emp 建立员工和部门的外键 2.在IDEA创建SSM项目环境 2.1配置Web模块 最上面的图是错误示范,注意!!! 在Tomcat配置了项目路径, ...

  4. angular前端框架简单小案例

    一.angular表达式 <head> <meta charset="UTF-8"> <title>Title</title> &l ...

  5. 一个用户管理的ci框架的小demo--转载

    一个ci框架的小demo 最近在学习ci框架,作为一个初学者,在啃完一遍官方文档并也跟着官方文档的例程(新闻发布系统)做了一遍,决定在将之前练习PHP与MySQL数据库的用户管理系统再用ci框架实现一 ...

  6. 《java入门第一季》之类小案例(模拟用户登录)

    首先是做一个用户登录的小案例.在此基础上加入其它逻辑. import java.util.Scanner; /* * 模拟登录,给三次机会,并提示还有几次.如果登录成功,就可以玩猜数字小游戏了. * ...

  7. Ajax传递json数据简介和一个需要注意的小问题

    Ajax传递json数据 Ajax操作与json数据格式在实际中的运用十分广泛,本文为大家介绍一个两者相结合的小案例: 项目结构 我们新建一个Django项目,在里面创建一个名为app01的应用: p ...

  8. Vue小案例(一)

    案例需求: 创建一个品牌展示表格,表头有编号(id),品牌名称(name),创建时间(time)和操作,需要实现的功能是对数据的增删操作,和时间的格式化. 思路分析:在开发之前需要想清楚要用到Vue中 ...

  9. react框架实现点击事件计数小案例

    下面将以一个小案例来讲解react的框架的一般应用,重点内容在代码段都有详细的解释,希望对大家有帮助 代码块: 代码块: import React from 'react'; import React ...

随机推荐

  1. CSUST 8.5 早训

    ## Problem A A - Meeting of Old Friends CodeForces - 714A 题意: 解题说明:此题其实是求两段区间的交集,注意要去除掉交集中的某个点. 题解: ...

  2. Redis---键的过期时间及数据淘汰策略

    5.键的过期时间   Redis可以为每个键设置过期时间,当键过期时,会自动删除该键.   对于散列表这种容器,只能为整个键设置过期时间(整个散列表),而不能为键里面的单个元素设置过期时间. 6.数据 ...

  3. Datatable 中的数据查询(查询不重复记录)

    http://blog.csdn.net/lovexiaoxiao/article/details/3734932 //在sql中我们使用distinct查询不重复记录    //然而我在项目中表关系 ...

  4. java复习(4)异常

    1.Java异常的分类和类结构图 1.Throwable是整个java异常体系的超类,所有的异常类都派生自这个类,包含Error和Exception这两个直接的子类,概括了所有能被当做异常跑出来的东西 ...

  5. 机器学习-KNN算法详解与实战

    最邻近规则分类(K-Nearest Neighbor)KNN算法 1.综述 1.1 Cover和Hart在1968年提出了最初的邻近算法 1.2 分类(classification)算法 1.3 输入 ...

  6. vs2013 找不到帮助 help查看器

    我手贱把help查看器卸载了,打开帮助提示找不到帮助. 不想把vs重装,打开ios镜像,加载,cmd进入 到packages\Help 执行msiexec /i help3_vs_net.msi vs ...

  7. netserver启动时报错 "Unable to start netserver with 'IN(6)ADDR_ANY' port '12865' and family AF_UNSPEC'"

    netperf启动netserver时报错 "Unable to start netserver with 'IN(6)ADDR_ANY' port '12865' and family A ...

  8. 【Thinkphp5】解决模板输出时间戳自动转换为时间格式的问题

    背景: 数据库存储时间为时间戳,格式为varchar,模板输出时未进行时间格式化却输出了时间格式 如下图 (数据库存储的时间戳) (页面输出的时间) (未进行格式化的时间代码) (格式化后的时间代码) ...

  9. 图像语义分割出的json文件和原图,用plt绘制图像mask

    1.弱监督 由于公司最近准备开个新项目,用深度学习训练个能够自动标注的模型,但模型要求的训练集比较麻烦,,要先用ffmpeg从视频中截取一段视频,在用opencv抽帧得到图片,所以本人只能先用语义分割 ...

  10. IDEA更改左侧目录层级结构

    齿轮---Compact Empty Middle Packages