Django通过json格式收集主机信息
代码如下
Control:
fromdjango.conf.urlsimportpatterns,include,url fromdjango.contribimportadmin admin.autodiscover() urlpatterns=patterns('', #Examples: #url(r'^$','simplecmdb.views.home',name='home'), #url(r'^blog/',include('blog.urls')), url(r'^admin/',include(admin.site.urls)), url(r'^hostinfo/collect/$','hostinfo.views.collect'), url(r'^hostinfo/getjson/$','hostinfo.views.getjson'), url(r'^hostinfo/gettxt/$','hostinfo.views.gettxt'), )
View:
fromdjango.shortcutsimportrender fromdjango.httpimportHttpResponse fromhostinfo.modelsimportHost,HostGroup importpickle importjson #Createyourviewshere. defcollect(req): ifreq.POST: #dic=pickle.loads(req.body) dic=json.loads(req.body) hostname=dic['hostname'] ip=dic['ip'] product=dic['product'] sn=dic['sn'] vendor=dic['vendor'] cpu_model=dic['cpu_model'] cpu_num=dic['cpu_num'] memory=dic['memory'] osver=dic['osver'] try: host=Host.objects.get(sn=sn) except: host=Host() host.hostname=hostname host.ip=ip host.product=product host.sn=sn host.vendor=vendor host.cpu_model=cpu_model host.cpu_num=cpu_num host.memory=memory host.osver=osver host.save() returnHttpResponse('datahavesaveintoDB') else: returnHttpResponse('thereisnodatafromPOSTmethod') defgetjson(req): ret_list=[] hg=HostGroup.objects.all() forginhg: ret={'groupname':g.groupname,'members':[]} forhing.members.all(): ret_h={'hostname':h.hostname,'ip':h.ip} ret['members'].append(ret_h) ret_list.append(ret) returnHttpResponse(json.dumps(ret_list)) defgettxt(req): res='' hg=HostGroup.objects.all() forginhg: groupname=g.groupname forhing.members.all(): hostname=h.hostname ip=h.ip res+=groupname+''+hostname+''+ip+'\n' returnHttpResponse(res)
Model:
fromdjango.dbimportmodels #Createyourmodelshere. classHost(models.Model): hostname=models.CharField(max_length=50) ip=models.IPAddressField() vendor=models.CharField(max_length=50) product=models.CharField(max_length=50) sn=models.CharField(max_length=50) cpu_model=models.CharField(max_length=50) cpu_num=models.IntegerField() memory=models.CharField(max_length=50) osver=models.CharField(max_length=50) def__unicode__(self): returnself.hostname classHostGroup(models.Model): groupname=models.CharField(max_length=50) members=models.ManyToManyField(Host)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。