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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。