django rest framework Viewsets 和 Serializers
使用drf的Viewsets和Serializers可以大大简化视图和对数据进行增删该查的编写代码。本文将会通过一个示例项目,详细地介绍利用drf对数据进行操作。
示例代码github地址:
https://github.com/jinjidejuren/drf_learn
项目的结构如下所示:
在对一个数据模型进行操作,一般的操作步骤如下:
1.确定models.py文件中模型的结构,也就是模型所包含的数据结构(该结构会映射到数据库中);
2.编写各模型对应的序列化类;
3.实现模型的视图操作类(在该类中可以实现搜索、分页、过滤、排序和权限控制等相关操作);
4.实现相关路由信息;
接下来我们逐个实现上述步骤,完成django rest framework开发的常见模式。而且在drf的官方文档中对各部分的实现也有详细的介绍。官方文档地址如下:
http://www.django-rest-framework.org/
django rest framework的使用要求如下:
REST framework requires the following:
Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6)
Django (1.10, 1.11, 2.0)
The following packages are optional:
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.
python的版本最好是3.6.x, django 这里使用的是1.11版本,下边的其他组件,可以使用pip进行安装:
pip install coreapi Markdown django-filter django-crispy-forms django-guardian
在项目的配置文件settings/base.py中添加rest_framework到应用列表中:
INSTALLED_APPS = [
# 'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'apps.assets',
'apps.rbac'
]
自己的应用apps.assets也需要添加到应用列表中。
django rest framework的登录地址可以注册在主路由文件中,在conf/urls.py的urlpatterns中做如下设置:
url(r'^assets/v1/', include('apps.assets.urls')),
url(r'^api-auth/', include('rest_framework.urls')),
第一行我们对api接口的url设定版本为v1,这是为了符合restful接口标准(后续将会介绍restful接口设计标准,以及接口文档的编写)。
在apps/assets/models.py文件中定义各model模型,这个示例实现了Region(区域)、MachineRoom(机房)、Cabinet(机柜)、Device(设备):
from django.db import models
class