django js实现部分页面刷新

例子中,我用的是显示机器上的进程信息的表格,获取不同的机器的进程信息时,更新这个展示信息的表格,如下:


当我在输入框中输入ip时,我希望只是更新这个表格,页面其他部分不变,实现方式如下:
1、在原页面中设置这个表格的id为pstable
<table class="table table-striped" id="pstable">
             <thead>
               <tr>
                 <th>user</th>
                 <th>pid</th>
                 <th>cmd</th>
               </tr>
             </thead>
             <tbody>
               {% for ps in info.ps_data %}
               <tr>
                 {% for item in ps %}
                 <td>{{ item }}</td>
                 {% endfor %}
               </tr>
               {% endfor %}
             </tbody>
     </table>

2、实现js

<script type="text/javascript">
$(document).ready(function(){
 $("#gobtn").click(function(){
  var ip=$("#ip").val();                //获取输入框中的ip
  $.post("/process/",{'hostip':ip},     //post函数到后端
    function(data,status){              //回调函数
         $("#pstable").html(data);      //将id为pstable的标签的html替换为返回的data
         $("#ip").val(ip)               //将输入框的值改为查询的ip
  });
});
});

3、view函数
def process_view(request):
        hostip = request.POST.get('hostip')
        logger.debug("host:%s" % hostip)
        if hostip is None:
                ps_data = GetHostPs('192.168.163.128')
                info = {'username':request.user,'ps_data':ps_data}
                template = 'process.html'
                #return render(request,'process.html',{"info":info})
        elif hostip:
                ps_data = GetHostPs(hostip)
                info = {'username':request.user,'ps_data':ps_data}
                template = 'pstable.html'
                #return render(request,'pstable.html',{"info":info})            
        else:
                ps_data = GetHostPs('192.168.163.128')
                info = {'username':request.user,'ps_data':ps_data}
                template = 'pstable.html'
        return render(request,template,{"info":info})

4、pstable.html 在这个html定义好要根据ip获取到进程信息后的html代码
<thead>
               <tr>
                 <th>user</th>
                 <th>pid</th>
                 <th>cmd</th>
               </tr>
             </thead>
             <tbody>
               {% for ps in info.ps_data %}
               <tr>
                 {% for item in ps %}
                 <td>{{ item }}</td>
                 {% endfor %}
               </tr>
               {% endfor %}
             <tbody>

当点击按钮查询指定ip的进程信息时,process()会判断这个ip的存在,如果这个ip存在,会将pstable.html保存到js函数中的data参数,然后js参数会调用回调函数,将id为pstable的tag的html替换为参数data保存的html,即pstable.html,从而局部修改页面,展示进程信息









评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值