引言

  使用Django Rest Framework以前咱们要先知道,它是什么,能干什么用?html

  引用官方一句话:Django REST框架是用于构建Web API的功能强大且灵活的工具包。前端

  那为何要使用Rest Framework?python

  Django REST Framework能够在Django的基础上迅速实现API,而且自身还带有WEB的测试页面,能够方便的测试本身的API。web

  Web应用模式

  咱们开发django项目时,常常会接触的接口这个东西,那么django-web开发接口是怎样呢?  先了解一下web先后端开发模式《django先后分离与不分离》,这篇文章是我发布在CSDN上的一篇简单叙述django开发模式。数据库

整体上就是:django

web应用模式分两种:后端

             1. 先后端不分离设计模式

        在先后端不分离的引用模式中,前端页面看到的效果都是由后端控制的,由后端页面渲染或者重定向,也就是后端须要控制前端的展现,前端与后端的耦合度很高,这种模式比较适合纯网页应用,可是后端对接APP时,App可能并不须要后端返回一个HTML网页,二仅仅是数据自己,因此后端本来返回网页的接口不在适用前端APP应用,为了对接APP后端嗨需再开发一套接口。api

        这个能够看我以前写的DJango博客就能够知道,每次返回时都是使用render 或者redirect来返回的,须要带上HTML页面和参数浏览器

             2. 先后端分离

          在先后端分离的应用模式中,后端仅返回前端所须要的数据,再也不渲染HTML页面,再也不控制前端的效果,只要前端用户看到什么效果,从后端请求的数据如何加载到前端中,都由前端本身决定,网页有网页本身的处理方式,APP有APP的处理方式,但不管哪一种前端所须要的数据基本相同,后端仅需开发一套逻辑对外提供数据便可,在先后端分离的应用模式中,前端与后端的耦合度相对较低

          在先后端分离的应用模式中,咱们一般将后端开发的每一视图都成为一个接口,或者API,前端经过访问接口来对数据进行增删改查

若是项目的需求是后一种状况的话,那么就能够用到Django Rest Framework了。

感兴趣的能够参考官方资料:https://www.django-rest-framework.org/,若是看不懂英文的伙伴,能够参考rest的中文文档:http://www.iamnancy.top/djangorestframework/Home/

  Django REST Framework项目

1.打开pycharm编辑器,新建项目,选择以下:

 这里虚拟环境是django_rest,若是看不懂,能够参考我前面写的虚拟环境使用的文章。

2.建好以后的项目结构以下:

 在建立的虚拟环境中安装Django REST framework:

  开发步骤

  上面已经安装好环境和包,如今就开始开发了。

1.首先配置setting文件,加入rest_framework应用。

2.全局设置,分页和API使用权限问题,指定管理员使用:

3.数据迁移

4.建立管理员帐号:

5. 建立数据序列化,主要来展现数据:

在api应用下面新建serializers.py文件

代码:

 说明:serializers用户定义API表现形式,好比返回哪些字段,什么格式等,这里是序列化django自带的User和Group。

6.建立视图函数:

 

7.在django_restAPI目录下url.py中,添加api的路由配置:

 

8.到此全部东西都已经写完,而后咱们运行runserver命令:

 

 接口返回403,提示没有权限,咱们登录一下试试:

 

 返回了两个url,一个是添加用户组,一个是添加用户。可能有些人有疑问,为啥是两个? 由于前面序列化数据的时候,数据展现形式写了两个,咱们注释一个,再运行试试:

 

查看界面:

 

点击添加用户连接,添加用户

 

 

 

 

 

这种是经过接口形式将用户组和用户展现出来,咱们能够登陆后台查看:

 因此,rest呈现给咱们是API,以调接口形式去操做数据库,而admin后台管理是页面的形式操做和展现数据。

细心的人能够发现,为啥status是红色的叉,是由于序列化的时候没有将状态字段显示,如今我将它放出来:

再运行程序,添加用户后查看:

 

 

 进入后端管理页面查看:

 是否是就开启了,若是不放心的同窗,能够去数据库查看一下:

 

到此,django_rest_framework入门教程已经讲完,无论之后是否开发API,是否用到,对于学习django新手来讲,了解一下设计模式和思想也是不错的。

  若是对python测试开发相关技术感兴趣的伙伴,欢迎加入测试开发学习交流QQ群:696400122,不积跬步,无以致千里。