说明
本文中所有内容仅作为学习使用,请勿用于任何商业用途。
本文为原创,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明。

  上一章节,我们仅仅是做到在admin管理后台看见我们定义的所有models信息。本章节开始主要是实现CMDB中资产新增、新资产上线、资产更新、资产展示等功能。

  首先需要更新视图文件view.py,先不要着急去撸代码,要搞清楚新增资产的大体逻辑再去撸代码(避免返工)下图为新增资产的逻辑图示及概述:

【IMU_Ops】------IV------ IMU自动化运维平台之CMDB(添加新资产)

  •   其中assets-data应该是通过POST发送至服务端的资产原始数据;
  •   资产数据通过json转换为json数据类型;
  •   进行接收到的数据进行合理检查(安全性、合理性、完整性等);
  •   判断数据是否为空,若为空则返回错误信息并退出视图;
  •   判断数据是否为字典类型(这里为了方便操作,定义资产数据为字典类型),若非字典则返回错误信息并退出视图;
  •   判断数据是否带有SN,若非则返回错误信息并退出视图(SN是标示一个合法资产的唯一字段,不能缺少不能为空);

  下面我们根据以上逻辑,编写新增资产的视图代码:

 

 1 from django.shortcuts import HttpResponse
 2 from django.views.decorators.csrf import csrf_exempt
 3 import json
 4 from assets import models
 5 from assets import assets_handler
 6 
 7 
 8 # Create your views here.
 9 @csrf_exempt  #这里为了方便暂且跳过Django的csrf安全机制(后期再完善安全相关配置)
10 def report(request):
11     if request.method == "POST":
12         assets_data = request.POST.get('assets_data')
13         print(assets_data)
14         data = json.loads(assets_data)
15         # 判断data是否为空
16         if not data:
17             return HttpResponse("提交的数据为空!")
18         if not issubclass(dict, type(data)):
19             return HttpResponse("提交的数据必须是字典格式!")
20         # 判断提交的数据是否有唯一键:sn
21         sn = data.get('sn', None)
22         if sn:
23             # 判断是否为线上资产中存在的资产
24             assets_obj = models.Assets.objects.filter(sn=sn)
25             if assets_obj:
26                 # 更新线上资产信息
27                 update_assets = assets_handler.UpdateAsset(request, assets_obj[0], data)
28                 return HttpResponse("资产已更新!")
29             else:
30                 # 进入待审批区域
31                 obj = assets_handler.NewAssets(request, data)
32                 response = obj.add_to_new_assets_zone()
33                 return HttpResponse(response)
34         else:
35             return HttpResponse("提交的数据中未包含SN,请校验数据!")
36     return HttpResponse("怎么就200了!")
view.py

相关文章: