第一步:安装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. SCUT - 485 - 质因数计数 - 原根

    https://scut.online/p/485 给定a和n,求有多少个质数p,满足n是使得a^n=1 mod p成立的最小正整数. 翻译:求有多少个质数p,使得a模p的阶delta_m(a)是n ...

  2. “百度杯”CTF比赛 十一月场--CrackMe01

    测试文件:https://static2.ichunqiu.com/icq/resources/fileupload/CTF/BSRC/BSRC-11-3/CrackMe01_97D2BF0DBD2E ...

  3. vue中获取滚动table的可视页面宽度,调整表头与列对齐(每列宽度不都相同)

    mounted() { // 在mounted中监听表格scroll事件 this.$refs.scrollTable.addEventListener( 'scroll',(event) => ...

  4. Vue组件化和路由

    组件化 组件化是vue的核心思想,它能提高开发效率,方便重复使用,简化调试步骤,提升整个项目的可维护性,便于多人协同开发 组件通信 父组件 => 子组件: 属性props 特性$attrs 引用 ...

  5. Nginx 的全局和虚拟主机配置

    Httpd.conf nginx.conf my-heavy-innode-4G.cnf php.ini  用中文注释 # user:指定 Nginx Worker 进程运行用户和用户组,默认 nob ...

  6. 使用Python发送企业微信消息

    准备工作: 到企业微信官网,注册一个企业:登录企业微信后台,创建一个“自建”应用, 获取企业ID.agentid.secret这3个必要的参数:在企业微信的通讯录中,创建多个测试账号:在手机端安装“企 ...

  7. 闲着没事写点啥之springmvc梳理

    用户通过浏览器向服务器发送请求,请求被springmvc的前端控制器dispatcherservlet拦截. dispatcherservlet拦截到请求后,会调用handlermapping处理器映 ...

  8. Django【第5篇】:Django之ORM数据库操作

    django之ORM数据库操作 一.ORM介绍 映射关系: 表名 -------------------->类名 字段-------------------->属性 表记录-------- ...

  9. 如何保证Redis与数据库的数据一致性

    一般来说,只要你用到了缓存,不管是Redis还是memcache,就可能会涉及到数据库缓存与数据的一致性问题,这里我们以Redis为例. 我们该如何保证Redis与数据库的一致性呢? So easy: ...

  10. java:集合输出之Iterator和ListIterator

    在调用Iterator集合输出时,如果想要删除某个元素,请直接使用Iterator来判断元素是否存在然后再删除(next()当前指针内容,remove()删除当前内容 );如果在将集合丢给Iterat ...