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中遇到的小问题及解决方法汇总
Jan 11 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
Jul 06 Python
python中装饰器级连的使用方法示例
Sep 29 Python
python中的常量和变量代码详解
Jul 25 Python
实例分析python3实现并发访问水平切分表
Sep 29 Python
Python将字符串常量转化为变量方法总结
Mar 17 Python
PyQt5实现简单数据标注工具
Mar 18 Python
值得收藏的10道python 面试题
Apr 15 Python
python统计字符的个数代码实例
Feb 07 Python
Python爬虫JSON及JSONPath运行原理详解
Jun 04 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
Python爬虫开发与项目实战
Dec 16 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
DC四月将推出百页特刊漫画 纪念小丑诞生80周年
2020/04/09 欧美动漫
PHP执行速率优化技巧小结
2008/03/15 PHP
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
jQuery插件easyUI实现通过JS显示Dialog的方法
2016/09/16 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成"...")
2016/11/28 Javascript
微信小程序开发探究
2016/12/27 Javascript
webpack3之loader全解析
2017/10/26 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
详解如何在Javascript中使用Object.freeze()
2020/10/18 Javascript
js实现复制粘贴的两种方法
2020/12/04 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
Python搭建代理IP池实现获取IP的方法
2019/10/27 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
薇姿法国官网:Vichy法国
2021/01/28 全球购物
计算机开发个人求职信范文
2013/09/26 职场文书
《恐龙》教学反思
2014/04/27 职场文书
2014和解协议书范文
2014/09/15 职场文书
市场总监岗位职责
2015/02/11 职场文书
实名检举信范文
2015/03/02 职场文书
护士旷工检讨书
2015/08/15 职场文书
pandas中对文本类型数据的处理小结
2021/11/01 Python
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js