前后端分离,前端写前端的,后端写后端的,但是它们中间得有一个api文档

1.idc资源

(1)models.py:

from django.db import models

class Idc(models.Model):
name = models.CharField("机房名",max_length=32)
address = models.CharField("机房地址",max_length=200)
phone = models.CharField("机房联系电话",max_length=15)
email = models.EmailField("机房联系email")
letter = models.CharField("idc字母简称",max_length=5)
def __str__(self):
return self.name
class Meta:
db_table = 'resources_idc'

(2)views.py:

from .models import Idc
from .serializers import IdcSerializer
from rest_framework import viewsets ########################## 版本七 ############################
class IdcViewset(viewsets.ModelViewSet): --->modelviewset继承了所有的操作方法
"""
retrieve:返回指定Idc信息
list:返回指定Idc列表
update:更新Idc信息
destroy:删除idc记录
create:创建idc记录
partial_update:更新部分字段
"""
queryset = Idc.objects.all()
serializer_class = IdcSerializer

(3)serializer.py:

from rest_framework import serializers
from .models import Idc
class IdcSerializer(serializers.Serializer): -->注意label是测试页面显示中文,help_text是接口文档页面显示中文
"""
Idc 序列化类
"""
id = serializers.IntegerField(read_only=True) #只读的,即忽略可不传
name = serializers.CharField(required=True,max_length=32, label="机房名称", help_text="机房名称") #意思是提交数据时此字段必须填且不能为空
address = serializers.CharField(required=True,max_length=256, label="机房地址", help_text="机房地址")
phone = serializers.CharField(required=True,max_length=15, label="联系电话", help_text="联系电话")
email = serializers.EmailField(required=True, label="email", help_text="email")
letter = serializers.CharField(required=True,max_length=5, label="字母简称", help_text="字母简称") def create(self, validated_data):
return Idc.objects.create(**validated_data)
def update(self, instance, validated_data): #对已经验证过的非常干净的数据进行修改,instance是当前的对象
instance.name = validated_data.get("name", instance.name) #哪些字段可以修改,且默认名是
instance.address = validated_data.get("address", instance.address)
instance.phone = validated_data.get("phone", instance.phone)
instance.email = validated_data.get("email", instance.email)
instance.save() #保存
return instance #返回

(4)urls.py:

from django.conf.urls import include, url
from django.contrib import admin
from rest_framework.routers import DefaultRouter
from idcs.views import IdcViewset
from apps.users.views import UserViewset route = DefaultRouter()
route.register("idcs", IdcViewset, basename="idcs")
#注册时三个参数:资源定位符,类,别名
route.register("users", UserViewset, basename="users")
urlpatterns = [
url(r'^', include(route.urls)),
]

(5)改错误提示为中文

运行后可以看到接口测试页面如下效果:

2.编写api文档

(python36env) [vagrant@CentOS7 devops]$ pip install coreapi

(python36env) [vagrant@CentOS7 devops]$ pip install coreapi-cli

(1)devops/urls.py中:

from django.conf.urls import include, url
from django.contrib import admin
from rest_framework.routers import DefaultRouter
from idcs.views import IdcViewset
from apps.users.views import UserViewset
from rest_framework.documentation import include_docs_urls route = DefaultRouter()
route.register("idcs", IdcViewset, basename="idcs")
#注册时三个参数:资源定位符,类,别名
route.register("users", UserViewset, basename="users")
urlpatterns = [
url(r'^', include(route.urls)),
url(r'^docs/', include_docs_urls("lizhihua运维平台接口文档"))
]

报错:
EST framework可以自动帮助我们生成接口文档。REST framewrok生成接口文档需要coreapi库的支持。在访问生成的接口文档时,可能会发生如下错误:
AttributeError: 'AutoSchema' object has no attribute 'get_link'异常处理
解决:在配置文件settings.py中重新指定schema_class的配置:
REST_FRAMEWORK = {
  'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
# 新版drf schema_class默认用的是rest_framework.schemas.openapi.AutoSchema

}

运行后效果如下:

一.3.序列化使用之idc资源与api文档的更多相关文章

  1. Bullet的学习资源(用Doxygen生成API文档)

    Bullet 全称 Bullet Physics Library,是著名的开源物理引擎(可用于碰撞检测.刚体模拟.可变形体模拟),这里将bullet的学习资源整理一下,希望能帮助入门者少走弯路. 看下 ...

  2. 互联网常见Open API文档资源

    原文地址:http://blog.sina.com.cn/s/blog_4d8713560100y272.html 所谓的开放API(OpenAPI)是服务型网站常见的一种应用,网站的服务商将自己的网 ...

  3. org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException 前言中不允许有内容 来自类路径资源的XML文档中的第1行是无效的

    今天复习一下Spring和Hibernate的整合,遇到了一个问题,报错信息如下: org.springframework.beans.factory.xml.XmlBeanDefinitionSto ...

  4. Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源,BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 各种后台管理系统

    Java,面试题,简历,Linux,大数据,常用开发工具类,API文档,电子书,各种思维导图资源,百度网盘资源BBS论坛系统 ERP管理系统 OA办公自动化管理系统 车辆管理系统 家庭理财系统 各种后 ...

  5. Java开发API文档资源

    <netty> http://netty.io/4.1/api/index.html < Spring FrameWork > 1   http://spring.io/ 2 ...

  6. ABP文档 - 嵌入的资源文件

    文档目录 本节内容: 简介 创建嵌入的文件 暴露嵌入的文件 使用嵌入的文件 简介 一个web应用里,客户端包含javascript,css,xml等文件,这此文件被添加到一个web项目后,发布成独立的 ...

  7. Laravel 5.1 文档攻略 —— Eloquent:模型对象序列化

    在写api的时候,数据一般是以json格式进行传输的,没有对象可以直接使用.这个时候,对数据的序列化转换就很重要,Eloquent提供了很方便的方法和约定,不仅可以转换,还可以控制里面的键值. 基本用 ...

  8. 使用Jil序列化JSON提升Asp.net web api 性能

    JSON序列化无疑是Asp.net web api 里面性能提升最重要的一环. 在Asp.net web api 里面我们可以插入自定义的MediaTypeFormatter(媒体格式化器), 说白了 ...

  9. 资源下载南方cass视频教程,包括文档,数据,很全的

    废话就不多说了,开始... 北方cass视频教程,包括文档,数据,很全的 视频下载地址:http://www.400gb.com/file/23459263 GIS网盘进入下载:http://laoh ...

随机推荐

  1. Java实现 LeetCode 587 安装栅栏(图算法转换成数学问题)

    587. 安装栅栏 在一个二维的花园中,有一些用 (x, y) 坐标表示的树.由于安装费用十分昂贵,你的任务是先用最短的绳子围起所有的树.只有当所有的树都被绳子包围时,花园才能围好栅栏.你需要找到正好 ...

  2. Java实现 蓝桥杯VIP 算法训练 数列

    问题描述 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,- (该序列实际上就是 ...

  3. Java实现 LeetCode 146 LRU缓存机制

    146. LRU缓存机制 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制.它应该支持以下操作: 获取数据 get 和 写入数据 put . 获取数据 get(key) - ...

  4. mybatis技术总结

    一.框架概述 day1 1.什么是框架 框架是系统的可重用设计,是对J2EE底层技术的封装(JDBC,IO流,多线程,Servlet,Socket). 2.框架解决了哪些问题? 1.解决了技术整合问题 ...

  5. Python—变量,条件语句,while循环,运算符,字符串等

     Python初识以及变量: 变量名:——字母 ——数字 ——下划线[见名识意] (PS:数字不能开头:不能是关键字:最好不能和python内置的东西重复) ##################### ...

  6. CentOS7搭建Pacemaker高可用集群(1)

    Pacemaker是Red Hat High Availability Add-on的一部分.在RHEL上进行试用的最简单方法是从Scientific Linux 或CentOS存储库中进行安装 环境 ...

  7. 涨见识了,在终端执行 Python 代码的 6 种方式!

    原作:BRETT CANNON 译者:豌豆花下猫@Python猫 英文:https://snarky.ca/the-many-ways-to-pass-code-to-python-from-the- ...

  8. PHP 安装 XDebug

    下载XDebug扩展 下载对应PHP版本的Xdebug 线程安全(TS)和非线程安全(NTS) 安装Xdebug扩展-php.ini [XDebug] xdebug.profiler_output_d ...

  9. 轻松解决Github连接缓慢、图裂问题

    1 简介 gayhub(误)github作为全世界最大的开源代码库以及版本控制系统,是用来托管项目以及学习开源技术非常好的平台,是我心中最好的学习网站,我们公众号的众多技术文章对应的数据和代码也都一直 ...

  10. 开发小白可以一年涨薪10w?这份java文档功不可没,学透你也可以

    靠这份文档,跳槽涨薪10K 金九银十的时候我分享了一份面试文档给我的兄弟,没想到这哥们2个月之内斩获数个BAT的offer, 最后选择了一个他最想要去的公司,既然有这么好的效果,我就打算把这份文档分享 ...