需求

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. Hibernate4

    内容简介:1.使用log4j的日志存储,2.一对一关系,3.二级缓存 1       整合log4j(了解) l  slf4j 核心jar  : slf4j-api-1.6.1.jar .slf4j是 ...

  2. jQuery获取节点和子节点文本的方法

    本节主要介绍了jQuery如何获取节点和子节点文本,下面有个示例,大家可以参考下 对于下面的html片段, ? 1 <div id="text_test">test t ...

  3. Javascript的组成——EMACScript、DOM、BOM

    EMACScript:一种规范,JS必须准守它的约定,JS的核心. DOM:文档对象模型,W3C标准,JS访问HTML文档的接口. BOM:浏览器对象模型,没有统一的标准.JS访问浏览器的接口. EM ...

  4. Tree Restoration Gym - 101755F (并查集)

    There is a tree of n vertices. For each vertex a list of all its successors is known (not only direc ...

  5. 线程(Thread)

    package cn.gouzao.demo3; public class ThreadDemo extends Thread{ public void run(){ for(int i=0;i< ...

  6. Xshell5

    Xshell5 -------- Xshell5默认属性 备份样式 --------------------------

  7. Storm中重要对象的生命周期

    Spout方法调用顺势 declareOutputFields()(调用一次) open() (调用一次) activate() (调用一次) nextTuple() (循环调用 ) deactiva ...

  8. Centos7使用kubeadm 安装多主高可用kubernets:v.1.11集群

    实验环境介绍: 本次实验环境是5个节点 3台master 2台node节点: k8smaster01 192.168.111.128 软件:etcd k8smaster haproxy keepali ...

  9. SQL优化笔记一:索引和explain

    目录 为什么需要优化SQL SQL优化的重点 索引 索引的结构 索引的优缺点总结: 索引的分类 索引操作 B树 实战 问题 数据库方面,我会使用MySQL来讲解 为什么需要优化SQL 性能低,执行时间 ...

  10. JAVA-比较浮点型数据

    Float public static void main(String[] args) { Float x = 12.4F; Float y = 12.4F; // 比较对象地址 System.ou ...