关闭

【Django】本地csv数据的页面table展示

581人阅读 评论(0) 收藏 举报
分类:

实现目标:

1 pandas:从本地读取csv文件,返回dataFrame数据格式。这里是考虑到未来以后要对数据进行分析结果。

2 将DataFrame转化为json数据,返回到前端

3 jQuery发送请求,接收json数据并灌到table标签中


1 views.py

def ajax_list(req):
    a = req.GET.get('a')   #获取参数
    print 'list a',a
    b = req.GET.get('b')
   # result = a + b
   # print result
    authors = Author.objects.all()  # model
    print authors 
    list_author =[]
    for author in authors:
        list_author.append(author.name) 

    df = pd.read_csv("E:/ceshi3.csv")
    df = df.ix[:10,:]   #这里是为了获取少量测试数据

    json_df = df_json(df)  #转json 
    print json_df
    return JsonResponse({'authors':list_author,'df':json_df}) 


2 dataFrame转json

def df_json(df):

    dict_df = df.T.to_dict(outtype='list')   # dataFrame转dict,0.18版本api有to_json(),按照行归集,但是缺少column
    print dict_df
    print len(dict_df)
    dict_df['column']=list(df.columns)   #把column添加进dict
    print dict_df

    json_df = eval(str(dict_df)) <span style="color:#ff6666;"> #这里的原因是为了解决dict_df 的index不是string类型,在json.dumps会报错</span>
    print type(json_df)
    print json.dumps(json_df)

    json_df = json.dumps(json_df)
    return  json_df


3 index.html

$("#list").click(function(){

     a = $("#a").val();
     b = $('#b').val();

     data = {'a':a,'b':b}

    $.ajax({
        type:'GET',    # method
        url:'/blog/ajax_list', #映射到views.py中ajax_list ,ajax是局部刷新
        data:data, #携带参数

        success:function(result){       #如果success 回调结果进行处理

            $("#lab").text("查询结果");

            authors = result['authors']
            df = result['df']

            alert(df)

            d = eval("("+df+")")  # eval() 是“”内的语句按照js进行执行
            alert(d)

            var html = '';


            var column = d["column"]
            alert(column)

            var len = column.length

            html += "<tr>"
            for(i=0;i<len;i++){
                html += "<th>" + column[i] + "</th>"
            }
            html += "</tr>"

            delete d.column
            alert(d)


            $.each(d,function(index,item){

            alert(index)
            alert(item)

            len = item.length
            alert(len)

            html += "<tr>"
            for(i=0;i<len;i++){

            html += "<td>"+item[i]+"</td>"
            }

            html += "</tr>"
            });
            $("#list_author").empty();    #先清table
            $("#list_author").append(html);  #先构造html 一次append 不要多次append 


            }


    });
    return false;

    });

1 <tr><td><th>

   <tr>下必须有<td>标签,

这样item显示不出来

var html = '';
$.each(authors,function(index,item){
alert(index)
alert(item)

html += "<tr>" + item + "</tr>";

});
$("#list_author").html(html);


2 $.each(data,function(index,item){

})   jQuery 对object 的遍历


3  eval 返回的是object类型

           d = eval("("+df+")")  # eval() 是“”内的语句按照js进行执行
            alert(d)

4 object的删除(delete)、索引、赋值

5 pandas中dataFrame转格式:to_record() / to_dict()
   注意参数是有要求的

6 import json

json.dumps()  dict转str   

json.loads()    str 转dict

2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:23053次
    • 积分:360
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:1篇
    • 译文:0篇
    • 评论:5条
    文章分类
    最新评论