Django通过json格式收集主机信息


Posted in Python onMay 29, 2020

代码如下

Control:

from django.conf.urls import patterns, include, url

from django.contrib import admin
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:

from django.shortcuts import render
from django.http import HttpResponse
from hostinfo.models import Host,HostGroup
import pickle
import json

# Create your views here.

def collect(req):
  if req.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()

    return HttpResponse('data have save into DB')
  else:
    return HttpResponse('there is no data from POST method')

def getjson(req):
  ret_list = []
  hg = HostGroup.objects.all()
  for g in hg:
    ret = {'groupname':g.groupname,'members':[]}
    for h in g.members.all():
      ret_h = {'hostname':h.hostname,'ip':h.ip}
      ret['members'].append(ret_h)
  ret_list.append(ret)
  return HttpResponse(json.dumps(ret_list))


def gettxt(req):
  res = ''
  hg = HostGroup.objects.all()
  for g in hg:
    groupname = g.groupname
    for h in g.members.all():
      hostname = h.hostname
      ip = h.ip
      res += groupname+' '+hostname+' '+ip+'\n'
  return HttpResponse(res)

Model:

from django.db import models

# Create your models here.

class Host(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):
    return self.hostname

class HostGroup(models.Model):
  groupname = models.CharField(max_length=50)
  members = models.ManyToManyField(Host)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
简单实现python爬虫功能
Dec 31 Python
Python多线程经典问题之乘客做公交车算法实例
Mar 22 Python
Python动态导入模块的方法实例分析
Jun 28 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
Pytorch 多块GPU的使用详解
Dec 31 Python
python3爬取torrent种子链接实例
Jan 16 Python
使用python绘制cdf的多种实现方法
Feb 25 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 Python
10款最佳Python开发工具推荐,每一款都是神器
Oct 15 Python
python爬虫搭配起Bilibili唧唧的流程分析
Dec 01 Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 24 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 Python
Python小白不正确的使用类变量实例
May 29 #Python
python小白切忌乱用表达式
May 29 #Python
Python爬虫实现百度翻译功能过程详解
May 29 #Python
Django中的模型类设计及展示示例详解
May 29 #Python
如何理解Python中包的引入
May 29 #Python
浅谈django channels 路由误导
May 28 #Python
Python如何实现FTP功能
May 28 #Python
You might like
PHP伪静态写法附代码
2008/06/20 PHP
php去除HTML标签实例
2013/11/06 PHP
php计算整个目录大小的方法
2015/06/01 PHP
jQuery Clone Bug解决代码
2010/12/22 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
jQuery函数的第二个参数获取指定上下文中的DOM元素
2014/05/19 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
基于Javascript实现倒计时功能
2016/02/22 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
WebSocket的简单介绍及应用
2019/05/23 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
jQuery实现简单日历效果
2020/07/05 jQuery
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
python操作xml文件示例
2014/04/07 Python
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
详解Python字符串对象的实现
2015/12/24 Python
Django学习笔记之Class-Based-View
2017/02/15 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
如何用Python做一个微信机器人自动拉群
2019/07/03 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
2020/02/07 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
python openssl模块安装及用法
2020/12/06 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
2020/12/09 Python
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
医院辞职信范文
2014/01/17 职场文书
促销活动计划书
2014/05/02 职场文书
2015小学教师年度工作总结
2015/05/12 职场文书
Java中的Kotlin 内部类原理
2022/06/16 Java/Android