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+' ' 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)