python学习笔记_week26

 

note
一、CMDB
    -采集资产
    -API
    -后台管理
        -资产列表(CURD)
        -业务线列表(CURD)
        -用户列表(CURD)
        -组列表(CURD)
        ...
        ===>简单<===
        公共组件:删改查
        查:
            资产列表(CURD)
                config=[
                {
                    "q":"id",
                },{
                    "q":"name",
                }]
                values_list=["id","name"]
                result=model.TB.objects.filter(条件).values(*values_list)
                #[{},{},{}]                      具体列
                ===>标配:配置+数据操作
二、算法
View Code

models
 1 from django.db import models
 2 # Create your models here.
 3 class UserInfo(models.Model):
 4     name=models.CharField(max_length=32)
 5     age=models.IntegerField()
 6 class BusinessUnit(models.Model):
 7     name = models.CharField(max_length=32)
 8 class Server(models.Model):
 9     server_type_choices=(
10         (1,"WEB"),
11         (2,"存储"),
12         (3,"缓存"),
13     )
14     server_type=models.IntegerField(choices=server_type_choices)
15     hostname=models.CharField(max_length=32)
16     port=models.IntegerField()
17     business_unit=models.ForeignKey('BusinessUnit',on_delete=models.CASCADE)
18     user=models.ForeignKey('UserInfo',on_delete=models.CASCADE)
View Code
views
  1 from django.shortcuts import render
  2 from django.views import View
  3 from django.shortcuts import HttpResponse
  4 from django.views import View
  5 from app01 import models
  6 import json
  7 # Create your views here.
  8 class BaseResponse(object):
  9     def __init__(self):
 10         self.status=True
 11         self.data=None
 12         self.message=None
 13 class ServerView(View):
 14     def get(self,request,*args,**kwargs):
 15         return render(request,'server.html')
 16 class ServerJsonView(View):
 17     def get(self,request,*args,**kwargs):
 18         response=BaseResponse()
 19         try:
 20             # 获取要显示的列
 21             # 获取数据
 22             table_config=[{
 23                     'q':'id',
 24                     'title': '主机名',
 25                     'display':0,
 26                     'text':{},
 27                     'attr':{}
 28                 },{
 29                 'q':'hostname',
 30                 'title':'主机名',
 31                 'display':1,
 32                 'text':{'content':'{m}','kwargs':{'m':'@hostname'}},
 33                 'attr': {'k1':'@hostname','k2':'v2'}
 34             },# '{n}-{m}'.format({'n':'@hostname','m':'@hostname'}) =>hostname-c1.com
 35                 {
 36                 'q':'port',
 37                 'title': '端口',
 38                 'display': 1,
 39                 'text': {'content':'{m}', 'kwargs': { 'm': '@port'}},
 40                  'attr': {'k1': '@port', 'k2': 'v2'}
 41             },{
 42                 'q':'business_unit_id',
 43                 'title': '业务线ID',
 44                 'display': 1,
 45                 #去全局变量business_unit_list=[
 46                     # {id:1,name:'WEB'},
 47                     # {id:2,name:'存储'},
 48                     # {id:1,name:'商城'},]
 49                 'text': {'content': '{m}', 'kwargs': { 'm': '@@business_unit_list'}},
 50                 'attr': {'k1': '@business_unit_id', 'k2': 'v2'}
 51             },{
 52                 'q':'business_unit__name',
 53                 'title': '业务线名称',
 54                 'display': 1,
 55                 'text': {'content': '{key}-{m}', 'kwargs': { 'key':'@business_unit_id','m': '@business_unit__name'}},
 56                     'attr': {'k1': '@business_unit__name', 'k2': 'v2'}
 57             },{
 58                 'q':None,
 59                 'title': '操作',
 60                 'display': 1,
 61                 'text': {'content': '<a herf="server-detail-{n}.html">查看详细</a>', 'm': '@id'},
 62                 'attr': {'k1': '@id', 'k2': 'v2'}
 63             },]
 64             values_list=[]
 65             for item in table_config:
 66                 if item['q']:
 67                     values_list.append(item['q'])
 68             data_list=models.Server.objects.values(*values_list)
 69             #[{},{}]
 70             data_list=list(data_list)
 71             print(data_list)
 72             response.data={
 73                 'table_config': table_config,
 74                 'data_list':data_list,
 75             }
 76         except Exception as e:
 77             response.status=False
 78             response.message=str(e)
 79         return HttpResponse(json.dumps(response.__dict__))
 80 class BusinessView(View):
 81     def get(self,request,*args,**kwargs):
 82         return render(request,'business.html')
 83 class BusinessJsonView(View):
 84     def get(self,request,*args,**kwargs):
 85         response=BaseResponse()
 86         try:
 87             # 获取要显示的列
 88             # 获取数据
 89             table_config=[{
 90                 'q':'id',
 91                 'title':'ID',
 92                 'display':1,
 93             },{
 94                 'q':'name',
 95                 'title': '业务线名称',
 96                 'display': 1,
 97             },{
 98                 'q':None,
 99                 'title': '操作',
100                 'display': 1,
101             },]
102             values_list=[]
103             for item in table_config:
104                 if item['q']:
105                     values_list.append(item['q'])
106             data_list=models.BusinessUnit.objects.values(*values_list)
107             #[{},{}]
108             data_list=list(data_list)
109             print(data_list)
110             response.data={
111                 'table_config': table_config,
112                 'data_list':data_list,
113             }
114         except Exception as e:
115             response.status=False
116             response.message=str(e)
117         return HttpResponse(json.dumps(response.__dict__))
View Code
urls
 1 from django.contrib import admin
 2 #from django.urls import path
 3 from django.conf.urls import url
 4 from app01 import  views
 5 urlpatterns = [
 6     url(r'^admin/',admin.site.urls),
 7     url(r'^server.html',views.ServerView.as_view()),
 8     url(r'^server-json.html',views.ServerJsonView.as_view()),
 9     url(r'^business.html', views.BusinessView.as_view()),
10     url(r'^business-json.html', views.BusinessJsonView.as_view()),
11 ]
View Code
nb-list
  1 (function (jq) {
  2     var requestURL;
  3     //为字符串创建format方法,用于字符串格式化
  4     String.prototype.format=function(args){
  5         return this.replace(/\{(\w+)\}/g,function(s,i){
  6             return args[i];
  7         });
  8     };
  9     function init() {
 10             //获取要显示的列
 11             //获取数据
 12             $.ajax({
 13                 url:requestURL,
 14                 type:'GET',
 15                 dataType:'JSON',
 16                 success:function (arg) {
 17                     if(arg.status){
 18                         //创建表格标题
 19                         createTablehead(arg.data.table_config);
 20                         /*
 21                         [{'hostname': 'c1.com', 'port': 11}, {'hostname': 'c2.com', 'port': 23}]
 22                         */
 23                         createTablebody(arg.data.table_config,arg.data.data_list);
 24                     }else{
 25                         alert(arg.message)
 26                     }
 27             }
 28                 })
 29         }
 30     function createTablehead(config){
 31             /*
 32             tr
 33                 td
 34                 td
 35             tr
 36              [{
 37                 'title':'主机名',
 38                 'display':0,
 39             },{
 40                 'title': '端口',
 41                 'display': 1,
 42             }] */
 43             var tr = document.createElement('tr')
 44             $.each(config,function(k,v){
 45                 if(v.display){
 46                     var th = document.createElement('th')
 47                     th.innerHTML=v.title;
 48                     $(tr).append(th);
 49                 }
 50             });
 51             $('#thead').append(tr);
 52         }
 53     function createTablebody(tableConfig,dataList){
 54             /*
 55             ,dataList=[{'hostname': 'c1.com', 'port': 11}, {'hostname': 'c2.com', 'port': 23}]
 56             tableConfig=[{
 57                 'q':'hostname',
 58                 'title':'主机名',
 59                 'display':1,
 60             },{
 61                 'q':'port',
 62                 'title': '端口',
 63                 'display': 1,
 64             },{
 65                 'q':None,
 66                 'title': '操作',
 67                 'display': 1,
 68             }]*/
 69         $.each(dataList,function (k1,row) {
 70             //row={'port':11,'hostname':'c1.com'}
 71             //row={'port':22,'hostname':'c2.com'}
 72             var tr=document.createElement('tr');
 73             $.each(tableConfig,function (k2,configItem) {
 74                 if(configItem.display){
 75                     /*configItem={
 76                     'q':'hostname',
 77                     'title':'主机名',
 78                     'display':1,},
 79                     'text': {'content': '<a herf="server-detail-{n}.html">查看详细</a>',  'm': '@id'} 
 80                     'attr':{},  */
 81                     var td =document.createElement('td');
 82                     //td.innerHTML=row[configItem.q];
 83                     //configItem.text.content
 84                     var kwargs={};
 85                     $.each(configItem.text.kwargs,function (key,value) {
 86                         if(value.startsWith("@")){
 87                             var temp=value.substring(1,value.length);
 88                             kwargs[key]=row[temp]
 89                         }else{
 90                             kwargs[key]=value;
 91                         }
 92                     });
 93                     td.innerHTML=configItem.text.content.format(kwargs);
 94                     $.each(configItem.attr,function (key,value) {
 95                         if(value.startsWith("@")){
 96                             var temp=value.substring(1,value.length);
 97                             td.setAttribute(key,row[temp]);
 98                         }else{
 99                              td.setAttribute(key,value);
100                         }
101                     });
102                     $(tr).append(td);
103                 }});
104             $('#tbody').append(tr);
105         })}
106     jq.extend({
107         'linan': function (url) {
108             requestURL=url
109             init();
110         }
111     })
112 })(jQuery);
View Code 
business
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title></title>
 6 </head>
 7 <body>
 8     <table border="1">
 9         <thead id="thead"></thead>
10             <tr>
11             </tr>
12         <tbody id="tbody"></tbody>
13     </table>
14     <script src="/static/jquery-1.12.4.js"></script>
15     <script src="/static/nb-list.js"></script>
16     <script>
17         $(function () {
18             $.linan('/business-json.html');
19         });
20     </script>
21 </body>
22 </html>
View Code
server
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title></title>
 6 </head>
 7 <body>
 8     <table border="1">
 9         <thead id="thead"></thead>
10             <tr>
11             </tr>
12         <tbody id="tbody"></tbody>
13     </table>
14     <script src="/static/jquery-1.12.4.js"></script>
15     <script src="/static/nb-list.js"></script>
16     <script>
17         $(function () {
18             $.linan('/server-json.html');
19         });
20     </script>
21 </body>
22 </html>
View Code

 CMDB

posted on 2018-01-24 19:31  我很好u 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/jyh-py-blog/p/8343203.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值