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查看zip包中文件及大小的方法
Jul 09 Python
python使用TensorFlow进行图像处理的方法
Feb 28 Python
python实现图书管理系统
Mar 12 Python
python实现将excel文件转化成CSV格式
Mar 22 Python
Python3实现的Mysql数据库操作封装类
Jun 06 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
Jul 26 Python
Django框架的中的setting.py文件说明详解
Oct 15 Python
python实现贪吃蛇游戏
Mar 21 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
Feb 25 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
pandas实现导出数据的四种方式
Dec 13 Python
M1芯片安装python3.9.1的实现
Feb 02 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
一个数据采集类
2007/02/14 PHP
PHP simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
JS的replace方法详细介绍
2012/11/09 Javascript
Jquery中children与find之间的区别详细解析
2013/11/29 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
jquery获取下拉框中的循环值
2017/02/08 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
javascript、php关键字搜索函数的使用方法
2018/05/29 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
centos6.4下python3.6.1安装教程
2017/07/21 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
详解Python self 参数
2019/08/30 Python
django迁移文件migrations的实现
2020/03/31 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
Python word文本自动化操作实现方法解析
2020/11/05 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
HTML5 Canvas实现烟花绽放特效
2016/03/02 HTML / CSS
汉森批发:Hansen Wholesale
2018/05/24 全球购物
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
高级技校毕业生自荐信
2013/11/18 职场文书
pytorch 如何使用float64训练
2021/05/24 Python
redis数据结构之压缩列表
2022/03/21 Redis
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers