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对象的深拷贝和浅拷贝详解
Aug 25 Python
python删除列表中重复记录的方法
Apr 28 Python
python基础教程之Filter使用方法
Jan 17 Python
python logging重复记录日志问题的解决方法
Jul 12 Python
python numpy 按行归一化的实例
Jan 21 Python
Python正则表达式急速入门(小结)
Dec 16 Python
Python对象的属性访问过程详解
Mar 05 Python
Windows10+anacond+GPU+pytorch安装详细过程
Mar 24 Python
Python使用pyyaml模块处理yaml数据
Apr 14 Python
没编程基础可以学python吗
Jun 17 Python
keras 实现轻量级网络ShuffleNet教程
Jun 19 Python
pygame面向对象的飞行小鸟实现(Flappy bird)
Apr 01 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
第十四节--命名空间
2006/11/16 PHP
PHP sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
IE无法设置短域名下Cookie
2010/09/23 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
2013/05/07 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
基于jQuery实现仿微博发布框字数提示
2016/07/27 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
[01:19:23]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第二场
2018/04/06 DOTA
python中的闭包用法实例详解
2015/05/05 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
python时间日期操作方法实例小结
2020/02/06 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
怎样比较两个类型为String的字符串
2016/08/17 面试题
历史学专业毕业生求职信
2013/09/27 职场文书
工程造价专业大学生职业规划范文
2014/03/09 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
大学副班长竞选稿
2015/11/21 职场文书
django 认证类配置实现
2021/11/11 Python
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电