码迷,mamicode.com
首页 > 数据库 > 详细

Django SimpleCMDB 使用序列化

时间:2019-02-03 10:54:14      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:request   传递   color   序列化   传递数据   eth   通过   get   shortcut   

如下,前面我们是使用 urllib 方法来转换并传递数据的:

[root@localhost ~]$ tail /data/script/getHostInfo.py 
if __name__ == __main__:
    ....

    data = urllib.urlencode(hostInfo)
    request = urllib2.urlopen(http://192.168.216.128:8000/hostinfo/collect/, data)
    print(request.read())


下面我们用序列化的方式来转换并传递数据,序列化用到的模块是 pickle ,关于序列化参考:https://www.cnblogs.com/pzk7788/p/10348496.html

[root@localhost ~]$ tail /data/script/getHostInfo.py 

import pickle
if __name__ == __main__: .... data = pickle.dumps(hostInfo) request = urllib2.urlopen(http://192.168.216.128:8000/hostinfo/collect/, data) print(request.read())
[root@localhost SimpleCMDB]$ cat hostinfo/views.py    # 修改视图函数
from django.shortcuts import render
from django.http import HttpResponse
from hostinfo.models import Host
import pickle

# Create your views here.

def collect(request):
    if request.POST:
        obj = pickle.loads(request.body)    # 先loads()保存成对象
        hostname = obj[hostname]          # 通过对象来获取数据
        ip = obj[ip]
        osver = obj[osver]
        vendor = obj[vendor]
        product = obj[product]
        cpu_model = obj[cpu_model]
        cpu_num = obj[cpu_num]
        memory = obj[memory]
        sn = obj[sn]
 
        host = Host()
        host.hostname = hostname
        host.ip = ip
        host.osver = osver
        host.vendor = vendor
        host.product = product
        host.cpu_model = cpu_model
        host.cpu_num = cpu_num
        host.memory = memory
        host.sn = sn
        host.save()

        return HttpResponse(OK)

    else:
        return HttpResponse(No Data!)
[root@localhost SimpleCMDB]$ python /data/script/getHostInfo.py 
OK


也可以使用 json 模块以序列化的方式来转换并传递数据:

[root@localhost ~]$ tail /data/script/getHostInfo.py 

import json

if __name__ == __main__:
    ....

    data = json.dumps(hostInfo)
    request = urllib2.urlopen(http://192.168.216.128:8000/hostinfo/collect/, data)
    print(request.read())
[root@localhost SimpleCMDB]$ cat hostinfo/views.py
from django.shortcuts import render
from django.http import HttpResponse
from hostinfo.models import Host
import json

# Create your views here.

def collect(request):
    if request.POST:
        obj = json.loads(request.body)
        hostname = obj[hostname]
        ip = obj[ip]
        osver = obj[osver]
        vendor = obj[vendor]
        product = obj[product]
        cpu_model = obj[cpu_model]
        cpu_num = obj[cpu_num]
        memory = obj[memory]
        sn = obj[sn]
 
        host = Host()
        host.hostname = hostname
        host.ip = ip
        host.osver = osver
        host.vendor = vendor
        host.product = product
        host.cpu_model = cpu_model
        host.cpu_num = cpu_num
        host.memory = memory
        host.sn = sn
        host.save()

        return HttpResponse(OK)

    else:
        return HttpResponse(No Data!)
[root@localhost SimpleCMDB]$ python /data/script/getHostInfo.py 
OK

 

 

 

 

 

 

 

 

 

      

Django SimpleCMDB 使用序列化

标签:request   传递   color   序列化   传递数据   eth   通过   get   shortcut   

原文地址:https://www.cnblogs.com/pzk7788/p/10349575.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!