一个将要被搜索的对象
这里有一个json对象:
{'appliances': [{'architecture': 'x86',
'changedDate': 1399439039901L,'cloudGroupId': '302',
'cloudGroupName': 'VMWareMock',
'cloudId': 'cloud://302/26d428b0-a3ba-40bd-8c84-131342efc7e4',
'cloudName': 'junit virtual machine snapshot_20140507130359_196',
'description': u'\u6620\u50cf\u5df2\u521b\u5efa\u4e3a\u5728 5/7/14 1:03 PM \u65f6\u5bf9\u5b9e\u4f8b junit virtual machine \u62cd\u6444\u7684\u5feb\u7167',
'hypervisor': 'VMware',
'id': '1455',
'isMaster': True,
'name': 'junit virtual machine snapshot_20140507130359_196',
'projectName': 'Public',
'projectUri': 'http://192.168.46.140:8080/cloud/api/projects/1',
'revision': '',
'revisionComments': '',
'specificationVersion': 'vmx-07',
'state': {'id': 'OK', 'label': 'OK'},
'uri': 'http://192.168.46.140:8080/cloud/api/appliances/1455',
'version': 'vmx-07'}
{......},],
'total': '11'}
其实它就是一个有两个元素的字典,第一个是设备,第二个是总数。
第二个元素简单,看第一个元素,key是appliances,value是一个列表"[]",每个列表又是一个包含19个元素的字典"{}"。(注意第17个元素的value还是一个字典,后边要提到)
第一步:把json对象用form表示出来,这里我们只显示一部分:
如上图。
如何得到数据呢,这里我们用硬编码直接在views.py里解析一个json对象:
def display_json(request):
conn=httplib.HTTPConnection('192.168.46.140', port = '8080')
userAndPass=b64encode(b"admin:passw0rd").decode("ascii")
headers={'Authorization':'Basic %s' % userAndPass}
conn.request('GET','/cloud/api/appliances',headers=headers)
res=conn.getresponse()
data=res.read()
appliances=json.loads(data)
return render_to_response('cloud.html', {'appliances': appliances["appliances"], 'date': now})
看倒数第二句,appliances即为json对象,接下来是解析出上图的5个部分:
看最后一句,将appliances["appliances"]传送给cloud.html来渲染
第一个appliances是json对象的名字,第二个appliances是json对象第一个元素(共两个元素)的key,所以
<table class="table" style="font-size:12px">
<thead>
<tr>
<th>
映像
</th>
<th>
状态
</th>
<th>
云
</th>
<th>
体系架构
</th>
<th>
版本
</th>
</tr>
</thead>
<tbody>
{% for appliance in appliances %}
<tr>
<td>
{{ appliance.name }}
</td>
<td>
{{ appliance.state.label }}
</td>
<td>
{{ appliance.cloudGroupName }}
</td>
<td>
{{ appliance.architecture }}
</td>
<td>
{{ appliance.specificationVersion }}
</td>
</tr>
{% endfor %}
</tbody>
</table>
22行的for appliance in appliances中的appliance为key:appliances的values即一个个列表:
28行的appliance.state是这个列表元素中key为state的字典的value
28行的state.label是state的key为label的字典的value(我表示我语文老师是数学老师在体育课上教的)
将就看吧。。。