django--json与表单(实例)

一个将要被搜索的对象

这里有一个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(我表示我语文老师是数学老师在体育课上教的)

将就看吧。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值