python-Django收集主机信息json格式

Control:

 1 from django.conf.urls import patterns, include, url
 2 
 3 from django.contrib import admin
 4 admin.autodiscover()
 5 
 6 urlpatterns = patterns('',
 7     # Examples:
 8     # url(r'^$', 'simplecmdb.views.home', name='home'),
 9     # url(r'^blog/', include('blog.urls')),
10 
11     url(r'^admin/', include(admin.site.urls)),
12     url(r'^hostinfo/collect/$','hostinfo.views.collect'),
13     url(r'^hostinfo/getjson/$','hostinfo.views.getjson'),
14     url(r'^hostinfo/gettxt/$','hostinfo.views.gettxt'),
15 )

View:

 1 from django.shortcuts import render
 2 from django.http import HttpResponse
 3 from hostinfo.models import Host,HostGroup
 4 import pickle
 5 import json
 6 
 7 # Create your views here.
 8 
 9 def collect(req):
10     if req.POST:
11         #dic = pickle.loads(req.body)
12         dic = json.loads(req.body)
13         hostname = dic['hostname']
14         ip = dic['ip']
15         product = dic['product']
16         sn = dic['sn']
17         vendor = dic['vendor']
18         cpu_model = dic['cpu_model']
19         cpu_num = dic['cpu_num']
20         memory = dic['memory']
21         osver = dic['osver']
22 
23         try:
24             host = Host.objects.get(sn=sn)
25         except:
26             host = Host()
27         host.hostname = hostname
28         host.ip = ip
29         host.product = product
30         host.sn = sn
31         host.vendor = vendor
32         host.cpu_model = cpu_model
33         host.cpu_num = cpu_num
34         host.memory = memory
35         host.osver = osver
36 
37         host.save()
38 
39         return HttpResponse('data have save into DB')
40     else:
41         return HttpResponse('there is no data from POST method')
42 
43 def getjson(req):
44     ret_list = []
45     hg = HostGroup.objects.all()
46     for g in hg:
47         ret = {'groupname':g.groupname,'members':[]}
48         for h in g.members.all():
49             ret_h = {'hostname':h.hostname,'ip':h.ip}
50             ret['members'].append(ret_h)
51     ret_list.append(ret)
52     return HttpResponse(json.dumps(ret_list))
53 
54 
55 def gettxt(req):
56     res = ''
57     hg = HostGroup.objects.all()
58     for g in hg:
59         groupname = g.groupname
60         for h in g.members.all():
61             hostname = h.hostname
62             ip = h.ip
63             res += groupname+' '+hostname+' '+ip+'\n'
64     return HttpResponse(res)

Model:

 1 from django.db import models
 2 
 3 # Create your models here.
 4 
 5 class Host(models.Model):
 6     hostname = models.CharField(max_length=50)
 7     ip = models.IPAddressField()
 8     vendor = models.CharField(max_length=50)
 9     product = models.CharField(max_length=50)
10     sn = models.CharField(max_length=50)
11     cpu_model = models.CharField(max_length=50)
12     cpu_num = models.IntegerField()
13     memory = models.CharField(max_length=50)
14     osver = models.CharField(max_length=50)
15     def __unicode__(self):
16         return self.hostname
17 
18 class HostGroup(models.Model):
19     groupname = models.CharField(max_length=50)
20     members = models.ManyToManyField(Host)
posted @ 2016-07-27 14:11  Nyan  阅读(343)  评论(0编辑  收藏  举报