python + django + easyui datagrid


前台:

<table id="dg"></table>

 $('#dg').datagrid({
            url:'/url/'

     columns:[[
                {field:'Name',title:'name',width:100},
                {field:'User',title:'user',width:100}

    ]]

})

后台:主要有3個參數,page(頁數)、rows(每頁行數)、total(總行數)

思路:

1、datagrid會自己傳page 跟rows過來,直接在后台獲取

2、得到page跟rows后把它們類型轉為int、從數據庫取出數據把總行數賦給total,然后把數據放到列表里面

3、判斷page是不是第一頁:

  3.1、如果是第一頁:判斷有多少行(rows),取rows行數據

  3.2、如果不是第一頁:從列表刪除page-1條數據得到剩余的數據,然后再做第3.1步

4、把total跟得到的數據拼起來:ealist = {'rows':alist,'total':total}

5、把ealist轉成json格式數據return回去, ok

def userlist(request):
    page = request.GET['page']
    rows = request.GET['rows']
    User_list = Userdb.objects.all().order_by('-id')
    alist=[]
    for i in User_list.values():
        alist.append(i)
    tl = len(alist)
    easy_list = []
    rs = rows
    a = int(page)-1
    b = int(rs)
    total = json.dumps(tl)
    if (a==0):
        a = 1
        if(b>len(alist)):
            ealist = {'rows':alist,'total':total}
        else:
            for s in range(a*b):
                easy_list.append(alist[s])
            ealist = {'rows':easy_list,'total':total}
    else:
        ss = alist[a*b:]
        if(len(ss)<b):
            ealist = {'rows':ss,'total':total}
        else:
            for i in range(a*b):
                easy_list.append(ss[i])
            ealist = {'rows':easy_list,'total':total}
    easylist = json.dumps(ealist,cls=CJsonEncoder)
    return HttpResponse(easylist)

//如果數據里面有時間的話,使用json.dumps()會出錯。下面這個函數就是處理這個問題

class CJsonEncoder(json.JSONEncoder):
    def default(self, obj):
        try:
            if isinstance(obj, datetime):
                 return obj.struct_time('%Y-%m-%d %H:%M:%S')
            elif isinstance(obj, date):
                da = str(obj.strftime('%Y-%m-%d'))
                #return obj.strftime('%Y-%m-%d')
                return da
            else:
                return json.JSONEncoder.default(self, obj)
        except Exception,e:
            print e

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM