需求

REST framework需要如下:

  • Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6)
  • Django (1.10, 1.11, 2.0)

下面的文件包可以选择性安装

安装

pip安装:

pip install djangorestframework
pip install markdown # Markdown 为可浏览的API提供服务
pip install django-filter # 支持分类

...or clone the project from github.

git clone git@github.com:encode/django-rest-framework.git

把'rest_framework'加入到settings里面的INSTALLED_APPS:

INSTALLED_APPS = [
....
'app01.apps.App01Config',
'rest_framework',
]

如果你想要使用可浏览的API,就需要添加REST framework的登陆和推出视图。然后把下面的路由加入到根目录下的urls.py文件内

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

当然啦,url的路径名称可以随便命名。

简单实例

一起通过一个快速简单的实例,使用REST framework建立简单的模型-后端API

这个实例将会创建一个可读可写的API,访问刚刚创建的项目里面用户权限信息服务。

任何关于REST framework API全局的设置,都被存放在一个单独的配置字典中(REST_FRAMEWORK),添加下面的设置到项目的settings.py文件中。

REST_FRAMEWORK = {
# 使用Django标准的django.contrib.auth权限或者允许未认证用户有只读权限
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
]
}

不要忘记你已经添加rest_framework到settings文件的INSTALLED_APPS.

快速开始

首次创建一个Django project,再创建一个app

同步一下数据库在terminal里面输入

shuais-MBP:TestApp dandyzhang$ python3 manage.py migrate

创建一个初始用户admin,密码password.1在下面的过程中需要用这个账户做验证。

python manage.py createsuperuser

上面的都配置好了,就可以正式开始撰写代码了。

Serializers

首先,需要定义一些serializers,创建一个新的py文件在新建的app内部'serializers.py',用来做数据表示。

from django.contrib.auth.models import User, Group
from rest_framework import serializers class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'groups') class GroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Group
fields = ('url', 'name')

注意在这个案例里,我们使用了超链接关系HyperlinkedModelSerializer,你也可以使用主键和各种其他的关系,但是超链接hyperlinking是很好的RESTful设计。

Views

现在,需要写一些视图了。打开新建的app内的view.py文件开始撰写

from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from app01.serializers import UserSerializer, GroupSerializer # Create your views here. class UserViewSet(viewsets.ModelViewSet):
"""
API终端允许用户被查看或者编辑
"""
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer class GroupViewSet(viewsets.ModelViewSet):
"""
API终端允许群组被查看或者
"""
queryset = Group.objects.all()
serializer_class = GroupSerializer

相比于撰写多个视图,我们更推荐把所有的共同行为组合到类称做视图集ViewSets的类中

如果需要的话,可以很轻易的把这些分解成单独的视图,但是使用视图集ViewSets让视图的逻辑保持的更好更整洁。

URLS

现在在Django项目的主urls文件中写入API URLs.

from django.contrib import admin
from django.urls import path, include from rest_framework import routers
from app01 import views router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet) # API 使用自动的URL路线
# 另外,添加了可浏览的API,包括登陆urls
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('rest_framework.urls', namespace='rest_framework')),
path('', include(router.urls)),
]

因为使用了视图集代替视图,我们可以自动为API生成URL的配置,通过路由类在视图集做简单的注册。

另外,如果需要对API URLs进行更多的控制,可以简单的使用常用的基于类的视图,并显式地编写URL CONF

最后,在可视化的API中包括了默认的登陆登出视图供使用。那是可选择的,但如果你的API需要认证并且你想使用可浏览的API那就很有用了。

Settings

添加'rest_framework' 到 INSTALLED_APPS. 总目录下的settings文件内

好了,我们已经完成了所有的工作了。

测试API

现在将要测试已经建立好的API。让我们首先开启这个项目的web服务。

打开浏览器,因为之前提过可浏览的API是可以不用登陆的

进入users

上面的数据是需要自己添加的,可以启用django admin添加,也可以直接在数据进行添加。

Django REST framework 简介的更多相关文章

  1. Django Rest Framework 简介及 初步使用

    使用Django Rest Framework之前我们要先知道,它是什么,能干什么用? Django Rest Framework 是一个强大且灵活的工具包,用以构建Web API 为什么要使用Res ...

  2. django rest framework 项目创建

    Django Rest Framework 是一个强大且灵活的工具包,用以构建Web API 为什么要使用Rest Framework Django REST Framework可以在Django的基 ...

  3. Django REST framework 理解

    ​ Web应用模式 1 .前后端不分离:在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与厚度那的耦合度很高. 这种应用模式比较 ...

  4. Rest Framework简介 和 RESTful API 设计指南

    使用Django Rest Framework之前我们要先知道,它是什么,能干什么用? Django Rest Framework 是一个强大且灵活的工具包,用以构建Web API 为什么要使用Res ...

  5. Django Rest framework实现流程

    目录 一 什么是restful架构 二 Django REST framework简介 三 Django REST framework原理 四 Django REST framework源码流程 五 ...

  6. 05.DRF-Django REST framework 简介

    一.明确REST接口开发的核心任务 分析一下上节的案例,可以发现,在开发REST API接口时,视图中做的最主要有三件事: 将请求的数据(如JSON格式)转换为模型类对象 操作数据库 将模型类对象转换 ...

  7. Django REST Framework API Guide 01

    之前按照REST Framework官方文档提供的简介写了一系列的简单的介绍博客,说白了就是翻译了一下简介,而且翻译的很烂.到真正的生产时,就会发现很鸡肋,连熟悉大概知道rest framework都 ...

  8. Django Rest framework 之 节流

    RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...

  9. django rest framework restful 规范

    内容回顾: . django请求生命周期 -> 执行遵循wsgi协议的模块(socket服务端) -> 中间件(路由匹配) -> 视图函数(业务处理:ORM.模板渲染) -> ...

随机推荐

  1. python与java的猜拳游戏

    python版: import randomprint("-----猜拳游戏-----")print("---0.剪刀--1.石头--2.布---")while ...

  2. Day27--Python--初识socket

    一. C\S架构, 客户端服务端架构 客户端(client): 享受服务端提供的服务 服务端(server): 给客户端提供服务 B\S 浏览器和服务端 B (browser) 二. 网络通信的整个流 ...

  3. Myeclipse启动报错:An error has occurred.See the log file

    出现这个问题是因为断电前myeclipse还在运行,日志报错如下: !ENTRY org.eclipse.osgi 4 0 2017-07-24 08:29:48.485 !MESSAGE An er ...

  4. 2018.10.26 浪在ACM 集训队第四次测试赛

    2018.10.26 浪在ACM 集训队第四次测试赛 题目一览表 来源 考察知识点 完成时间 A 生活大爆炸版 石头剪刀布  NOIP 提高组 2014   模拟???  2018.11.9 B 联合 ...

  5. JS(基础)_总结获取页面中元素和节点的方式

    一.前言 1.元素和节点的区别 2.总结获取元素的方式 3.总结获取节点的方式 二.主要内容 1.结点和元素的区别 (1)一些常见基本概念: 文档:document 元素:页面中所有的标签 结点:页面 ...

  6. phpStudy 5.5n +zendstudio12.5+xDebugger的配置

    1.之前一直安装zendDebugger都没装上去,用phpStudy版本转换器转到对应版本的ZendDebuger也没用,后来发现自己下载的zendstudio的php是5.5的,而且自带了zend ...

  7. python: 基本知识(二)

    1.set() set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集.差集.并集等. x = set('hello’) y = set('world') x ---- ...

  8. bzoj3718 树状数组

    https://www.lydsy.com/JudgeOnline/problem.php?id=3718 有时候,要透过题面看到本质 题意 你的老板命令你将停车场里的车移动成他想要的样子.停车场是一 ...

  9. flask 过滤器

    作用的对象是jinja2模版中的变量({{}}) 参考链接: http://jinja.pocoo.org/docs/2.9/templates/#builtin-filters 内置过滤器 字符串操 ...

  10. Dubbo管控台安装(zookeeper集群)

    Dubbo管控台可以对注册到zookeeper注册中心的服务或服务消费者进行管理,但管控台是否正常对Dubbo服务没有影响,管控台也不需要高可用,因此节点部署   环境:Centos6.6.IP:10 ...