目录结构

1.前言

2.进行实际的一个完整流程操作

2.1.第一步:编写一个用于查询用户数据的视图函数

2.2.第二步:编写对应的一个url匹配规则

2.3.第三步:启动django项目【helloworld】服务

2.4.第四步:通过任一浏览器访问url地址【http://127.0.0.1:8000/search_person_data/】后查看展示数据

2.5.第五步:复制接口返回值去【https://www.json.cn/】进行json数据在线解析和格式化,方便直观查看数据

1.前言

首先,整体的开发思路是:比如一个前端开发人员A和一个后端开发人员B,一起联调一个【查询用户数据】功能,那么前端开发人员A就负责【查询用户数据的页面】的开发,后端开发人员B就负责【查询用户数据的接口】的开发且开发完成且自测通过后提供给前端开发人员A进行联调。

我们要知道,前端开发人员A和后端开发人员B一起开发这个功能的前提都是要严格产品人员编写的需求文档和原型图进行开发的。

所以前端开发人员A在实际开发过程中会要求后端开发人员提供的【查询用户数据的接口】的返回值必须满足这两点:

⑴.必须有返回前端开发人员A需要的所有字段和字段值信息,因为前端开发人员才能拿到这些数据去进行自测确保数据都没遗漏;

⑵.每个字段值的数据结构要满足前端开发人员A的要求,因为前端开发人员A会拿到这样的字段值直接去做相关处理而不需要对字段值的数据结构进行二次处理从而能提高前端开发人员A的开发效率也能提高数据的加载效率。

细节:

①.在django框架里,接口其实就是视图函数,只是称呼不一致而已。

②.后续涉及的前后端接口联调流程,基本按照这样的思路去进行即可。

2.进行实际的一个完整流程操作

2.1.第一步:编写一个用于查询用户数据的视图函数

# 该视图函数的作用:按照不同条件,来获取hello_person表指定的数据。
def search_person(request):
# 进行实际的一个完整流程操作 try:
res = Person.objects.all().values()
res = list(res)
except:
raise("查询语句执行过程中出现报错信息,程序终止执行!") data = {} # 初始化一个空dict,用于存储要返回给前端页面的所有字段和对应字段值,且字段对应字典的key,字段值对应字典的value; if len(res) != 0: # 对查询到的数据做相关判断,从而执行不同的代码分支;
data["result"] = res # 1.第一步:把数据表的相关数据都存储在这个key【result】;
data["code"] = 200 # 2.第二步:把状态码200的值存储在这个key【code】;
data["success"] = True # 3.第三步:把状态success的值存储在这个key【success】;
data["msg"] = "获取数据成功!" # 4.第四步:把信息的值存储在这个key【msg】;
else:
data["result"] = res
data["code"] = 100
data["success"] = False
data["msg"] = "获取不到数据!" return JsonResponse(data,json_dumps_params={"ensure_ascii":False})

2.2.第二步:编写对应的一个url匹配规则

细节:

①.url匹配规则在之前已经配置好了,在之前的博客文章里可以找到对应内容,在这篇博客里不再继续重复写一遍了;

2.3.第三步:启动django项目【helloworld】服务

2.4.第四步:通过任一浏览器访问url地址【http://127.0.0.1:8000/search_person_data/】后查看展示数据

2.5.第五步:复制接口返回值去【https://www.json.cn/】进行json数据在线解析和格式化,方便直观查看数据

{
"result":[
{
"id":9,
"name":"洪景盛150760794",
"age":28
},
{
"id":10,
"name":"洪景盛175166058",
"age":28
},
{
"id":11,
"name":"洪景盛886992327",
"age":43
}
],
"code":200,
"success":true,
"msg":"获取数据成功!"
}

django学习-17.如何提供一个规范的接口返回值的更多相关文章

  1. 【mybatis】mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wait timeout exceeded; try restarting transaction

    今天使用mybatis和jpa的过程中,发现这样一个问题: mybatis执行一个update方法,返回值为1,但是数据库中数据并未更新,粘贴sql语句直接在数据库执行,等待好久报错:Lock wai ...

  2. django学习-3.如何编写一个html页面并展示到浏览器,及相关导入错误的解决方案

    1.前言 在django中,视图的概念是:具有相同功能和模板的网页,都可以称为视图.通俗一点来说,就是你平常打开任一浏览器,输入一个地址A后看到浏览器窗口展示出来地址A所对应的页面内容B,页面内容B就 ...

  3. [Python]公司接口返回值规范

    返回值规范 json { "code":200, "message":"" "data":[ { "title ...

  4. Bash脚本编程学习笔记04:测试命令test、状态返回值、位置参数和特殊变量

    我自己接触Linux主要是大学学习的Turbolinux --> 根据<鸟哥的Linux私房菜:基础篇>(第三版) --> 马哥的就业班课程.给我的感觉是这些课程对于bash的 ...

  5. Django实现统一包装接口返回值数据格式

    前言 最近实在太忙了,开始了一个新的项目,为了快速形成产品,我选择了Django来实现后端,然后又拿起了之前我封装了项目脚手架「DjangoStarter」. 由于前段时间我写了不少.NetCore的 ...

  6. Python学习教程(learning Python)--2.3.4Python函数返回值

    本节讨论Python函数返回值问题. Python和C语言一样,也可以在函数结束时返回一个值.但在定义自己的Python函数时,是不需要指定返回值数据类型的,这和Python不关心变量的数据类型是一致 ...

  7. jmeter将上一个接口返回值作为下一个接口的请求参数

    在jmeter中有时候会用到,将上一个接口的返回值作为下一个接口的请求参数 具体操作如下: 1.首先新建一个http请求(右键线程组--添加Sampler--http请求),同时添加好接口相应的请求参 ...

  8. springMVC学习(4)-商品修改(RequestMapping解释、controller返回值)

    一.需求: 操作流程: 1.进入商品查询列表页面 2.点击修改,进入商品修改页面,页面中显示了要修改的商品(从数据库查询) 3.在商品修改页面,修改商品信息,修改后,点击提交 代码: ItemsMap ...

  9. Objective-C学习笔记(二十一)——函数的返回值与參数类型

    我们在之前的博客中涉及到的函数都没有參数,同一时候返回值也为void,即不须要返回值. 可是在以后的开发中.函数返回值和參数是必须涉及到的. 所以如今我们来讨论这个问题.我们还是以People类为例. ...

随机推荐

  1. 基础知识——TCP协议

    七层网络模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层. 五层网络模型: 1. 应用层:确定进程之间通信的性质以满足用户需求.(各种传输协议) 2. 运输层:负责主机间不同进程的通信 ...

  2. DEDECMS:修改网站底部出现的POWER BY DEDECMS

    在include/dedesql.classs.php文件中找到第588行: $arrs1 = array(0x63,0x66,0x67,0x5f,0x70,0x6f,0x77,0x65,0x72,0 ...

  3. Object类的常见方法总结

    ♧ Object类是比较特殊的类,它是所有类的父类.主要提供了11个方法(JDK 1.8为例): /** * native方法,用于返回当前运行时对象的Class对象,使用final关键字修饰,子类不 ...

  4. vscode开发vue,热更新

    1.首先用vscode去安装热更新插件 2.vscode安装后默认修改的文件是没有开启自动保存的,需要将自动保存勾选 这样就不用每次修改都去open with live server:

  5. .net core Api 部署到Linux

    一.环境介绍 1..net开发环境:asp.net core 3.1 2.Linux环境:CentOS Linux release 7.9.2009 (Core) 3.Swagger: Swashbu ...

  6. MySQL常用SQL语句2

    -- 1创建student和score表 CREATE TABLE Student( Id INT(10) PRIMARY KEY auto_increment, Name VARCHAR(20) N ...

  7. B - Play on Words

    如果这个图是欧拉路,则每个顶点的出度等于入度.即out[i] = in[i] 如果这个图是半欧拉图,则起点的出度比入度大1,终点的入度比出度大1.其余顶点的出度等于入度.如果满足上述条件,就可以将所有 ...

  8. 【poj 1984】&【bzoj 3362】Navigation Nightmare(图论--带权并查集)

    题意:平面上给出N个点,知道M个关于点X在点Y的正东/西/南/北方向的距离.问在刚给出一定关系之后其中2点的曼哈顿距离((x1,y1)与(x2,y2):l x1-x2 l+l y1-y2 l),未知则 ...

  9. Codeforces Round #647 (Div. 2) - Thanks, Algo Muse! A、Johnny and Ancient Computer B、Johnny and His Hobbies C、Johnny and Another Rating Drop

    题目链接:A.Johnny and Ancient Computer 题意: 给你两个数a,b.问你可不可以通过左移位运算或者右移位运算使得它们两个相等.可以的话输出操作次数,不可以输出-1 一次操作 ...

  10. AtCoder Beginner Contest 181 E - Transformable Teacher (贪心,二分)

    题意:有一长度为奇数\(n\)的数组\(a\),和长度为\(m\)的数组\(b\),现要求从\(b\)中选择一个数放到\(a\)中,并将\(a\)分成\((n+1)/2\)个数对,求最小的所有数对差的 ...