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系统接口的更多相关文章

  1. Spring Boot入门(四):开发Web Api接口常用注解总结

    本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序员的日常工作中,Web开发应该是占比很重的一部分,至少我工作以来,开发的系统基本都是Web端访问的 ...

  2. Express+MongoDB开发web后台接口MongoDB

    摘要: Express开发web接口; 安装MongoDB,启动.连接MongoDB服务台; 使用nodejs和mongoose模块链接和操作MongoDB; 一.Express开发web接口 exp ...

  3. 二、利用EnterpriseFrameWork快速开发Web系统(B/S)

    EnterpriseFrameWork框架实例源代码下载: 实例下载 本章通过一个开发实例来讲解Web系统的开发经过,以及会碰到的一些问题.实例功能就是业务系统中最常见的增.删.改.查来演示,用一个界 ...

  4. Java Web系统经常使用的第三方接口

    1. Web Service 接口 1.1 接口方式说明和长处 在笔者的开发生涯中,当作为接口提供商给第三方提供接口时,以及作为client去调用第三方提供的接口时,大部分时候都是使用 Web  Se ...

  5. Java Web系统常用的第三方接口

    1.    Web Service 接口 1.1 接口方式说明和优点 在笔者的开发生涯中,当作为接口提供商给第三方提供接口时,以及作为客户端去调用第三方提供的接口时,大部分时候都是使用 Web  Se ...

  6. 微信小程序的Web API接口设计及常见接口实现

    微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,通过小程序的请求Web API 平台获取JSON数据后,可以在小程序界面上进行数据的动态展示.在数据的关键 一环中,我们 ...

  7. 三、利用EnterpriseFrameWork快速开发Winform系统(C/S)

    EnterpriseFrameWork框架实例源代码下载: 实例下载 上一章讲解了开发Web系统的详细步骤,以书籍的管理作实例实现对书籍的增.删.改.查功能,本章接着上面的实例继续补充用Winform ...

  8. 如何整合Office Web Apps至自己开发的系统(一)

    在前面我的一篇博客中 Office Web Apps安装部署(一),有一张介绍Office Web Apps与其他系统的关系图,   从上述图中,可知实际上Office Web Apps也是可以接入自 ...

  9. 一个简单web系统的接口性能分析及调优过程

    在测试一个简单系统接口性能压力时,压到一定数量,程序总是崩溃,查看相关机器相关数据时,CPU.内存.IO占用均不高,问题自然出现在其它地方先介绍下系统部件架构 Resin版本为:[root@local ...

随机推荐

  1. 如何在一个电脑上使用两个github账号

    问题描述:公司电脑上默认使用的是公司的github账号,如果希望写一些代码放到个人的github账号上,就需要配置让一个电脑上可以使用两个github账号 原理:管理两个SSH key 1.生成两个S ...

  2. JAVA基础——集合——HashMap

    HashMap集合: 常用方法(JDK1.8):   从此映射中移除所有映射关系(元素): public void clear()   返回此 HashMap 实例的浅表副本:并不复制键和值本身: p ...

  3. Python数据分析与挖掘常用模块

    python在数据科学方面需要用到的库: a.Numpy:科学计算库.提供矩阵运算的库. b.Pandas:数据分析处理库 c.scipy:数值计算库.提供数值积分和常微分方程组求解算法.提供了一个非 ...

  4. Python3使用AES加密的库函数PyCrypto、PyCryptodome

    我们在网上查看Python爬虫教程的时候,细心的朋友会发现:很多网站为了降低服务器的请求压力都做了各式各样的反爬策略,浏览器通过http post请求服务器端数据时,传输的data字段很多都是经过加密 ...

  5. 安装WIN7/WIN10上的 CPU版本的TensorFlow

    随手记 ancaconda Anaconda2-5.0.1-Windows-x86_64(python3.5 ancaconda python-3.5.2-amd64 安装TensorFlow的时候自 ...

  6. Network In Network学习笔记

    Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50458190 作者:hjimce 一.相关理论 本篇 ...

  7. MB SD Connect Compact 5 Error 95.53392.0 Solved

    MB SD Connect Compact 5 is new released from MB Star company ,and its original version here the copy ...

  8. go get Unknown SSL protocol error in connection to gopkg.in

    OSX go get报错 go get Unknown SSL protocol error in connection to gopkg.in https://github.com/niemeyer ...

  9. LR访问Https接口

    实操篇 第一步:需要跟开发或者运维要到要访问的https接口的证书(有关证书的问题我们在原理中有解释). 第二步:确定要来的证书的格式是否为pem格式的.首先,LR只能够识别pem格式的证书而且是DE ...

  10. java框架注意

    struts2 数据类型不匹配时会return "input" <result name="input">/WEB-INF/index.jsp< ...