Django REST framework 简介
需求
REST framework需要如下:
- Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6)
- Django (1.10, 1.11, 2.0)
下面的文件包可以选择性安装
- coreapi (1.32.0+) - Schema generation support.
- Markdown (2.1.0+) - Markdown support for the browsable API.
- django-filter (1.0.1+) - Filtering support.
- django-crispy-forms - Improved HTML display for filtering.
- django-guardian (1.1.1+) - Object level permissions support.
安装
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 简介的更多相关文章
- Django Rest Framework 简介及 初步使用
使用Django Rest Framework之前我们要先知道,它是什么,能干什么用? Django Rest Framework 是一个强大且灵活的工具包,用以构建Web API 为什么要使用Res ...
- django rest framework 项目创建
Django Rest Framework 是一个强大且灵活的工具包,用以构建Web API 为什么要使用Rest Framework Django REST Framework可以在Django的基 ...
- Django REST framework 理解
Web应用模式 1 .前后端不分离:在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与厚度那的耦合度很高. 这种应用模式比较 ...
- Rest Framework简介 和 RESTful API 设计指南
使用Django Rest Framework之前我们要先知道,它是什么,能干什么用? Django Rest Framework 是一个强大且灵活的工具包,用以构建Web API 为什么要使用Res ...
- Django Rest framework实现流程
目录 一 什么是restful架构 二 Django REST framework简介 三 Django REST framework原理 四 Django REST framework源码流程 五 ...
- 05.DRF-Django REST framework 简介
一.明确REST接口开发的核心任务 分析一下上节的案例,可以发现,在开发REST API接口时,视图中做的最主要有三件事: 将请求的数据(如JSON格式)转换为模型类对象 操作数据库 将模型类对象转换 ...
- Django REST Framework API Guide 01
之前按照REST Framework官方文档提供的简介写了一系列的简单的介绍博客,说白了就是翻译了一下简介,而且翻译的很烂.到真正的生产时,就会发现很鸡肋,连熟悉大概知道rest framework都 ...
- Django Rest framework 之 节流
RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...
- django rest framework restful 规范
内容回顾: . django请求生命周期 -> 执行遵循wsgi协议的模块(socket服务端) -> 中间件(路由匹配) -> 视图函数(业务处理:ORM.模板渲染) -> ...
随机推荐
- python与java的猜拳游戏
python版: import randomprint("-----猜拳游戏-----")print("---0.剪刀--1.石头--2.布---")while ...
- Day27--Python--初识socket
一. C\S架构, 客户端服务端架构 客户端(client): 享受服务端提供的服务 服务端(server): 给客户端提供服务 B\S 浏览器和服务端 B (browser) 二. 网络通信的整个流 ...
- 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 ...
- 2018.10.26 浪在ACM 集训队第四次测试赛
2018.10.26 浪在ACM 集训队第四次测试赛 题目一览表 来源 考察知识点 完成时间 A 生活大爆炸版 石头剪刀布 NOIP 提高组 2014 模拟??? 2018.11.9 B 联合 ...
- JS(基础)_总结获取页面中元素和节点的方式
一.前言 1.元素和节点的区别 2.总结获取元素的方式 3.总结获取节点的方式 二.主要内容 1.结点和元素的区别 (1)一些常见基本概念: 文档:document 元素:页面中所有的标签 结点:页面 ...
- phpStudy 5.5n +zendstudio12.5+xDebugger的配置
1.之前一直安装zendDebugger都没装上去,用phpStudy版本转换器转到对应版本的ZendDebuger也没用,后来发现自己下载的zendstudio的php是5.5的,而且自带了zend ...
- python: 基本知识(二)
1.set() set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集.差集.并集等. x = set('hello’) y = set('world') x ---- ...
- bzoj3718 树状数组
https://www.lydsy.com/JudgeOnline/problem.php?id=3718 有时候,要透过题面看到本质 题意 你的老板命令你将停车场里的车移动成他想要的样子.停车场是一 ...
- flask 过滤器
作用的对象是jinja2模版中的变量({{}}) 参考链接: http://jinja.pocoo.org/docs/2.9/templates/#builtin-filters 内置过滤器 字符串操 ...
- Dubbo管控台安装(zookeeper集群)
Dubbo管控台可以对注册到zookeeper注册中心的服务或服务消费者进行管理,但管控台是否正常对Dubbo服务没有影响,管控台也不需要高可用,因此节点部署 环境:Centos6.6.IP:10 ...