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
Django SimpleCMDB 使用序列化的更多相关文章
- Django 缓存、序列化、信号
一,缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcac ...
- Django框架之序列化和上传文件
一.Django的序列化(对于ajax请求) Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式. 1)django序列化的使用方法 . ...
- django rest_framework Serializers 序列化组件
为什么要用序列化组件 当我们做前后端分离的项目~~我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 那么我们给前端数据的时候都要转成json格式,那就需要对我们从数据库拿 ...
- Django的DRF序列化方法
安装rest_framework -- pip install djangorestframework -- 注册rest_framework序列化 -- Python--json -- 第一版 用v ...
- JSON和Django内置序列化
JSON 什么是JSON JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * J ...
- Django REST Framework序列化器
Django序列化和json模块的序列化 从数据库中取出数据后,虽然不能直接将queryset和model对象以及datetime类型序列化,但都可以将其转化成可以序列化的类型,再序列化. 功能需求都 ...
- AJAX—JSON和Django内置序列化
JSON 什么是JSON JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * J ...
- Django学习之序列化和信号
一.序列化 1.serializers 2.json.dumps 二.信号 1.Django内置信号 2.自定义信号 一.序列化 关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用 ...
- django 3.1 序列化讲述
序列化Django对象¶ Django的序列化框架提供了一种将Django模型"翻译"为其他格式的机制.通常,这些其他格式将基于文本,并用于通过电线发送Django数据,但是序列化 ...
随机推荐
- android设置GridView高度自适应,实现全屏铺满效果
使GridView每个item的高度自适应拉伸,达到整个GridView刚好铺满全屏的效果. public static void setGridViewMatchParent(GridView gr ...
- Linux 内核版本,Ubuntu版本的查看
查看内核版本 1) cat /proc/version [root@a ~]# cat /proc/version Linux version 2.6.18-194.el5 (mockbuild@x ...
- 关于Unity中物理检测的准备
1.要确定每个物体的碰撞类型,是有碰撞效果的碰撞还是没有碰撞效果的碰撞(is trigger),带不带刚体. 2.给每个物体分层,再设置哪些层会发生碰撞,哪些完全不产生碰撞. 3.给每个物体设置标记, ...
- 第一个shell程序
前言:我为什么又来学习shell呢?因为这个轻量级的编程小脚本语言能够帮我处理一些基于linux的复杂手工工作.真是一言难尽,学会一门又来一门!! 看了2天这个教程,试着写了一个小脚本,没啥技术含量, ...
- 第三百六十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的bool组合查询
第三百六十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的bool组合查询 bool查询说明 filter:[],字段的过滤,不参与打分must:[] ...
- mvn archetype:generate 创建Maven项目
mvn archetype:generate 创建Maven项目 mvn compile 编译源代码 mvn deploy 发布项目 mvn test-compile 编译测试源代码 mvn test ...
- (实用)Ubuntu 、CentOS更换国内源
Ubuntu更换apt-get源 通过编辑/etc/apt/sources.list文件,我们能够更换Ubuntu的默认软件更新源.通常是将其换成一些国内比较知名的源.本文主要列举这些内容. 注意,在 ...
- perl 截取 fastq文件
#!/usr/bin/perl -w use warnings; use strict; input_fastq trim_length}; ; my ($fastq, $trim_length) = ...
- kubeadm init 卡在 Created API client, waiting for the control plane to become ready
执行 kubeadm init 时出现卡在了 [apiclient] Created API client, waiting for the control plane to become ready ...
- Dubbo简介2
Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成.具体可以看 百度百科 https://baike.ba ...