• Django-前后端分离接口


    1、发布会添加接口

    2、发布会查询接口

    3、嘉宾添加接口

    4、嘉宾查询接口

    5、嘉宾签到接口

    from django.http import JsonResponse
    from django.core.exceptions import ValidationError, ObjectDoesNotExist
    from django.db.utils import IntegrityError
    import time
    
    
    
    from loginApp.models import Event, Guest
    
    # 添加发布会接口
    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','')   # 发布会时间
    
        if eid =='' or name == '' or limit == '' or address == '' or start_time == '':
            return JsonResponse({'status':10021,'message':'parameter error'})
    
        result = Event.objects.filter(id=eid)
        if result:
            return JsonResponse({'status':10022,'message':'event id already exists'})
    
        result = Event.objects.filter(name=name)
        if result:
            return JsonResponse({'status':10023,'message':'event name already exists'})
    
        if status == '':
            status = 1
    
        try:
            Event.objects.create(id=eid,name=name,limit=limit,address=address,status=int(status),start_time=start_time)
        except ValidationError:
            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'})
    
    
    # 添加嘉宾接口
    def add_guest(request):
        eid =  request.POST.get('eid','')                # 关联发布会id
        realname = request.POST.get('realname','')       # 姓名
        phone = request.POST.get('phone','')             # 手机号
        email = request.POST.get('email','')             # 邮箱
    
        if eid =='' or realname == '' or phone == '':
            return JsonResponse({'status':10021,'message':'parameter error'})
    
        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     # 发布会时间
        timeArray = time.strptime(str(event_time), "%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':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_event_list(request):
    
        eid = request.GET.get("eid", "")      # 发布会id
        name = request.GET.get("name", "")    # 发布会名称
    
        if eid == '' and name == '':
            return JsonResponse({'status':10021,'message':'parameter error'})
    
        if eid != '':
            event = {}
            try:
                result = Event.objects.get(id=eid)
            except ObjectDoesNotExist:
                return JsonResponse({'status':10022, 'message':'query result is empty'})
            else:
                event['eid'] = result.id
                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})
    
        if name != '':
            datas = []
            results = Event.objects.filter(name__contains=name)
            if results:
                for r in results:
                    event = {}
                    event['eid'] = r.id
                    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':'query result is empty'})
    
    
    # 嘉宾查询接口
    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':'query result is empty'})
    
        if eid != '' and phone != '':
            guest = {}
            try:
                result = Guest.objects.get(phone=phone,event_id=eid)
            except ObjectDoesNotExist:
                return JsonResponse({'status':10022, 'message':'query result is empty'})
            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'})
    
        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     # 发布会时间
        timeArray = time.strptime(str(event_time), "%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'})
    
        result = Guest.objects.filter(phone=phone)
        if not result:
            return JsonResponse({'status':10025,'message':'user phone null'})
    
        result = Guest.objects.filter(phone=phone,event_id=eid)
        if not result:
            return JsonResponse({'status':10026,'message':'user did not participate in 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(phone=phone).update(sign='1')
            return JsonResponse({'status':200,'message':'sign success'})
    

    6、配置接口路径

    修改urls.py

    """loginDemo URL Configuration
    
    The `urlpatterns` list routes URLs to views. For more information please see:
        https://docs.djangoproject.com/en/1.11/topics/http/urls/
    Examples:
    Function views
        1. Add an import:  from my_app import views
        2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
    Class-based views
        1. Add an import:  from other_app.views import Home
        2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
    Including another URLconf
        1. Import the include() function: from django.conf.urls import url, include
        2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
    """
    from django.conf.urls import url
    from django.contrib import admin
    from django.urls import include
    
    from loginApp import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^login/', views.login),
        url(r'^login_action/', views.login_action),
        url(r'^event_manage/', views.event_manage),
        url(r'^accounts/login',views.login),
        url(r'^search_name/',views.search_name),
        url(r'^search_phone/',views.search_phone),
        url(r'^guest_manage/',views.guest_manage),
        url(r'^sign_index/(?P<event_id>[0-9]+)/$',views.sign_index),
        url(r'^sign_index_action/(?P<event_id>[0-9]+)/$', views.sign_index_action),
        url(r'^logout/',views.logout),
        url(r'^api/', include(('loginApp.urls','loginApp'), namespace="sign")),
    ]
    

     新增loginApp/urls.py 

    from django.conf.urls import url
    
    from loginApp import views_interface
    
    urlpatterns = [
        # guest system interface:
        # ex : /api/add_event/
        url(r'^add_event/', views_interface.add_event, name='add_event'),
        # ex : /api/add_guest/
        url(r'^add_guest/', views_interface.add_guest, name='add_guest'),
        # ex : /api/get_event_list/
        url(r'^get_event_list/', views_interface.get_event_list, name='get_event_list'),
        # ex : /api/get_guest_list/
        url(r'^get_guest_list/', views_interface.get_guest_list, name='get_guest_list'),
        # ex : /api/user_sign/
        url(r'^user_sign/', views_interface.user_sign, name='user_sign'),
    ]
    

    7、启动后访问:http://127.0.0.1:8000/,用postman或者raw等接口测试工具进行测试

    (1)add_event

    case1:eid为空

    case2:name为空

    case3:limit为空

    case4:address为空

    case5:start_time为空

    case6:start_time不是YYYY-MM-DD格式/start_time是YYYY-MM-DD格式,但不是准确的时间2021-13-21 34:21:89

    case7:eid发布会id已经存在

    case8:name已经存在

    case9:status为空,成功创建,status=1

    case10:status传参0,成功创建,status=0

    你要相信 一切都会好起来
  • 相关阅读:
    CSS的三种定位方式介绍(转载)
    CSS背景颜色透明
    去除网页滚动条的方法
    es6
    Android复习
    caculater
    字符流
    字节流
    File类
    泛型继承
  • 原文地址:https://www.cnblogs.com/feifei-cyj/p/14422812.html
Copyright © 2020-2023  润新知