zoukankan      html  css  js  c++  java
  • Django SimpleCMDB 使用序列化

    如下,前面我们是使用 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

          

  • 相关阅读:
    用命令创建MySQL数据库
    Linux下安装mysql
    MySQL字符集及校对规则的理解
    Mybatis 高级结果映射 ResultMap Association Collection
    查看linux系统版本命令
    hdu 1217 Arbitrage (最小生成树)
    hdu 2544 最短路(两点间最短路径)
    hdu 3371 Connect the Cities(最小生成树)
    hdu 1301 Jungle Roads (最小生成树)
    hdu 1875 畅通工程再续(prim方法求得最小生成树)
  • 原文地址:https://www.cnblogs.com/pzk7788/p/10349575.html
Copyright © 2011-2022 走看看