django2_开发web系统接口
1、单独创建.../sign/views_if.py文件,开发添加发布会接口
from django.http import JsonResponse
from cmdb.models import Event,Guest
from django.core.exceptions import ValidationError,ObjectDoesNotExist
from django.db.utils import IntegrityError
import time #添加发布会接口
def add_event(request):
eid=request.Post.get('eid','') #发布会id
name=request.Post.get('name','') #发布会标题
limit=request.Post.get('limit','') #限制人数
status=request.Post.get('status','') #状态
address=request.Post.get('address','') #地址
start_time=request.Post.get('start_time','') #发布会时间 #判断 eid、 name、limit、address、start_time 等字段均不能为空,否则 JsonResponse()返回相应的 状态码和提示。
if eid =='' or name=='' or limit=='' or address=='' or start_time=='':
return JsonResponse({'status':10021,'message':'parameter error'})
#,判断发布会 id 是否存在,以及发布会名称(name)是否存在;如果存在将返回相应的状态码和 提示信息。
result=Event.objects.filter(id=eid)
if result:
return JsonResponse({'status':10022,'message':'event id already exists'})
result = Event.objects.filter(name = name) #判断发布会状态是否为空,如果为空,将状态设置为 1(True)。
if result:
return JsonResponse({'status':10023, 'message':'event name already exists'})
if status == '':
status = 1
#将数据插入到 Event 表,在插入的过程中如果日期格式错误,将抛出 ValidationError 异常,接收 该异常并返回相应的状态和提示,否则,插入成功,返回状态码 200 和“addeventsuccess”的提示
try:
Event.objects.create(id=eid,name=name,limit=limit,address=address, status=int(status),start_time=start_time)
except ValidationError as e:
error = 'start_time format error. It must be in YYYY-MM-DD HH:MM:SS format.'
return JsonResponse({'status':10024,'message':error})
return JsonResponse({'status':200,'message':'add event success'}) #添加发布会查询接口
'''from django.core.exceptions import ValidationError,ObjectDoesNotExist''' def get_event_list(request):
#通过GET请求接收发布会id和name参数
eid=request.GET.get("eid","") #发布会id
name=request.GET.get("name","") #发布会名称 #判断当两个参数同时为空,接 口返回状态码 10021,参数错误。
if eid=='' and name =='':
return JsonResponse({'status':10021,'message':'parameter error'})
#,优先通过 id 查询,因为 id 的唯一性,查询结果只会有一条,将查询结果 以 key:value 对的方式存放到定义的 event 字典中,并将数据字典作为整个返回字典中 data 对应的值返回
if eid !='':
event={}
try:
result=Event.objects.get(id=eid)
except ObjectDoesNotExist:
return JsonResponse({'status':10022,'message':'queryresultisempty'})
else:
event['name']=result.name
event['limit']=result.limit
event['status']=result.status
event['address'] = result.address
event['start_time'] = result.start_time
return JsonResponse({'status':200, 'message':'success', 'data':event}) #name 查询为模糊查询,查询数据可能会有多条,返回的数据稍显复杂;首先将查询的每一条数据放到一 个字典 event 中,再把每一个字典再放到数组 datas 中,最后再将整个数组做为返回字典中 data 对应的值返回
if name != '':
datas = []
results = Event.objects.filter(name__contains=name)
if results:
for r in results:
event = {}
event['name'] = r.name
event['limit'] = r.limit
event['status'] = r.status
event['address'] = r.address
event['start_time'] = r.start_time
datas.append(event)
return JsonResponse({'status':200, 'message':'success', 'data':datas})
else:
return JsonResponse({'status':10022,'message':'queryresultisempty'}) #添加嘉宾接口
'''
from cmdb.models import Event,Guest
from django.db.utils import IntegrityError
import time
'''
def add_guest(request):
#通过POST请求接收嘉宾参数:关联的发布会id、姓名、手机号和邮箱等参数
eid = request.POST.get('eid','') # 关联发布会id
realname = request.POST.get('realname','') # 姓名
phone = request.POST.get('phone','') # 手机号
email = request.POST.get('email','') #邮箱 #判断 eid、realname、phone 等参数均不能为空
if eid =='' or realname == '' or phone == '':
return JsonResponse({'status':10021,'message':'parameter error'})
#,判断嘉宾关联的发布会 id 是否存在,以及关联的发布会状态是否为 True(即 1),如果不存在 或不为 True,将返回相应的状态码和提示信息
result = Event.objects.filter(id=eid)
if not result:
return JsonResponse({'status':10022,'message':'event id null'})
result = Event.objects.get(id=eid).status
if not result:
return JsonResponse({'status':10023, 'message':'event status is not available'})
event_limit = Event.objects.get(id=eid).limit # 发布会限制人数
guest_limit = Guest.objects.filter(event_id=eid) # 发布会已添加的嘉宾数 #判断当前时间是否大于发布会时间,如果大于则说明发布已开始,或者早已经结束。那么该发布会就应该不能允许再添加嘉宾
if len(guest_limit) >= event_limit:
return JsonResponse({'status':10024,'message':'event number is full'})
event_time = Event.objects.get(id=eid).start_time # 发布会时间
etime = str(event_time).split(".")[0]
timeArray = time.strptime(etime, "%Y-%m-%d %H:%M:%S")
e_time = int(time.mktime(timeArray))
now_time = str(time.time()) # 当前时间
ntime = now_time.split(".")[0]
n_time = int(ntime)
#插入嘉宾数据,如果发布会的手机号重复则抛 IntegrityError 异常,接收该异常并返回相应的状态 码和提示信息。如果添加成功,则返回状态码 200 和“addguestsuccess”的提示
if n_time >= e_time:
return JsonResponse({'status':10025,'message':'event has started'})
try: Guest.objects.create(realname=realname,phone=int(phone),email=email, sign=0,event_id=int(eid))
except IntegrityError:
return JsonResponse({'status':10026, 'message':'the event guest phone number repeat'})
return JsonResponse({'status':200,'message':'add guest success'}) #嘉宾查询接口
def get_guest_list(request):
eid = request.GET.get("eid", "") # 关联发布会id
phone = request.GET.get("phone", "") # 嘉宾手机号
if eid == '':
return JsonResponse({'status':10021,'message':'eid cannot be empty'})
if eid != '' and phone == '':
datas = []
results = Guest.objects.filter(event_id=eid)
if results:
for r in results:
guest = {}
guest['realname'] = r.realname
guest['phone'] = r.phone
guest['email'] = r.email
guest['sign'] = r.sign
datas.append(guest)
return JsonResponse({'status':200, 'message':'success', 'data':datas})
else:
return JsonResponse({'status':10022,'message':'queryresultisempty'})
if eid != '' and phone != '':
guest = {}
try:
result = Guest.objects.get(phone=phone,event_id=eid)
except ObjectDoesNotExist:
return JsonResponse({'status':10022,'message':'queryresultisempty'})
else:
guest['realname'] = result.realname
guest['phone'] = result.phone
guest['email'] = result.email
guest['sign'] = result.sign
return JsonResponse({'status':200, 'message':'success', 'data':guest}) #嘉宾签到接口
def user_sign(request):
eid = request.POST.get('eid','') # 发布会id
phone = request.POST.get('phone','') # 嘉宾手机号
#判断两个参数均不能为空
if eid =='' or phone == '':
return JsonResponse({'status':10021,'message':'parameter error'}) #判断发布会 id 是否存在,以及发布会状态是否为 True,如果不存在或不为 True,将返回相应的状 态码和提示信息。
result = Event.objects.filter(id=eid)
if not result:
return JsonResponse({'status':10022,'message':'event id null'})
result = Event.objects.get(id = eid).status
#判断当前时间是否大于发布会时间,如果大于发布会时间说明发布会已开始,不允许签
if not result:
return JsonResponse({'status':10023, 'message':'event status is not available'})
event_time = Event.objects.get(id=eid).start_time # 发布会时间
etime = str(event_time).split(".")[0]
timeArray = time.strptime(etime, "%Y-%m-%d %H:%M:%S")
e_time = int(time.mktime(timeArray))
now_time = str(time.time()) # 当前时间
ntime = now_time.split(".")[0]
n_time = int(ntime)
if n_time >= e_time:
return JsonResponse({'status':10024,'message':'event has started'})
#判断嘉宾的手机号是否存在,以及嘉宾的手机号与发布会 id 是否为对应关系。否则返回相应的 错误码和提示信息。
result = Guest.objects.filter(phone = phone)
if not result:
return JsonResponse({'status':10025,'message':'user phone null'})
result = Guest.objects.filter(event_id=eid,phone=phone)
if not result:
return JsonResponse({'status':10026, 'message':'user did not participatein the conference'})
result = Guest.objects.get(event_id=eid,phone = phone).sign
if result:
return JsonResponse({'status':10027,'message':'user has sign in'})
else:
Guest.objects.filter(event_id=eid,phone=phone).update(sign='')
return JsonResponse({'status':200,'message':'sign success'})
#判断该嘉宾的状态是否为已签到,如果已签到,返回相应的状态码和提示;如果未签到修改状态 为已签到,并返回状态码 200 和“signsuccess”的提示。
2、接口文档
学习来源于虫师
django2_开发web系统接口的更多相关文章
- Spring Boot入门(四):开发Web Api接口常用注解总结
本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序员的日常工作中,Web开发应该是占比很重的一部分,至少我工作以来,开发的系统基本都是Web端访问的 ...
- Express+MongoDB开发web后台接口MongoDB
摘要: Express开发web接口; 安装MongoDB,启动.连接MongoDB服务台; 使用nodejs和mongoose模块链接和操作MongoDB; 一.Express开发web接口 exp ...
- 二、利用EnterpriseFrameWork快速开发Web系统(B/S)
EnterpriseFrameWork框架实例源代码下载: 实例下载 本章通过一个开发实例来讲解Web系统的开发经过,以及会碰到的一些问题.实例功能就是业务系统中最常见的增.删.改.查来演示,用一个界 ...
- Java Web系统经常使用的第三方接口
1. Web Service 接口 1.1 接口方式说明和长处 在笔者的开发生涯中,当作为接口提供商给第三方提供接口时,以及作为client去调用第三方提供的接口时,大部分时候都是使用 Web Se ...
- Java Web系统常用的第三方接口
1. Web Service 接口 1.1 接口方式说明和优点 在笔者的开发生涯中,当作为接口提供商给第三方提供接口时,以及作为客户端去调用第三方提供的接口时,大部分时候都是使用 Web Se ...
- 微信小程序的Web API接口设计及常见接口实现
微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,通过小程序的请求Web API 平台获取JSON数据后,可以在小程序界面上进行数据的动态展示.在数据的关键 一环中,我们 ...
- 三、利用EnterpriseFrameWork快速开发Winform系统(C/S)
EnterpriseFrameWork框架实例源代码下载: 实例下载 上一章讲解了开发Web系统的详细步骤,以书籍的管理作实例实现对书籍的增.删.改.查功能,本章接着上面的实例继续补充用Winform ...
- 如何整合Office Web Apps至自己开发的系统(一)
在前面我的一篇博客中 Office Web Apps安装部署(一),有一张介绍Office Web Apps与其他系统的关系图, 从上述图中,可知实际上Office Web Apps也是可以接入自 ...
- 一个简单web系统的接口性能分析及调优过程
在测试一个简单系统接口性能压力时,压到一定数量,程序总是崩溃,查看相关机器相关数据时,CPU.内存.IO占用均不高,问题自然出现在其它地方先介绍下系统部件架构 Resin版本为:[root@local ...
随机推荐
- MyBatisPlus忽略映射字段注解
MyBatisPlus忽略映射字段注解 @TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的. @TableField(exist = true):表示该 ...
- PyQt5信号、定时器及多线程
信号 信号是用于界面自动变化的一个工具,原理是信号绑定了一个函数,当信号被触发时函数即被调用 举个例子 from PyQt5 import QtWidgets,QtCore from untitled ...
- js格式化时间的方法
方法一:用js格式化时间的方法. Date.prototype.format =function(format) { var o = { "M+" : this.getMonth( ...
- 解决Windows下文件在Linux下打开出现乱码的问题
目录 问题 原理 解决 总结 参考资料 问题 前几天生病了,Java一直在看代码但是没跟着打,于是决定偷一波小小的懒,直接把教材的代码从Windows通过共享文件夹放到了Linux里面.但是编译的时候 ...
- iDigital2019数字营销广告主峰会
iDigital 数字营销品牌广告主峰会是定向邀请形式的闭门社交峰会, 现已成长为享誉亚洲的营销广告行业活动, 致力于帮助品牌营销官, 决策者和业界同行在日益整合的数字商业时代下获得战略远景.组委会邀 ...
- 二、latex简单使用
安装成功则可显示如图所示的信息. 用记事本便可完成整个过程. 命令如图所示: 首先用documentclass命令引入一个文档类,比如引入article文档类,主要用于撰写论文.{}中的内容表示命令的 ...
- Maven 编译跳过检查
Maven 编译跳过检查 使用maven打包的时候指令:clean package, 但过程可会有提示检测错误,如果想跳过检查,需加上:-Dmaven.test.skip=true 完整指令: cle ...
- Javascript根据id获取数组对象
在业务中,列表页跳转详情页时,经常会将Id值传入,然后再根据id值异步获取数据. 假设有服务端的json数据: <注意,这里的data是指已经从后端获取的json, 而非后端原始的文件> ...
- 新装Windows Server 2008 r2无法连接有线网络
新装的Windows Server 2008 r2没有网卡驱动,所以没有网络适配器. 首先,我在相同的型号电脑上查到这个主板的网卡驱动安装的是Intel(R) Ethernet Coinnection ...
- C#中哈希表(HashTable)的用法详解以及和Dictionary比较
1. 哈希表(HashTable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对, ...