django easyui分頁處理

2021-09-05 00:27:32 字數 4002 閱讀 5804

相關**:

思路:

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

2、得到page跟rows後把它們型別轉為int、從資料庫取出資料把總行數賦給total,然後把資料放到列表裡面

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

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

3.2、如果不是第一頁:從列表刪除page-1條資料得到剩餘的資料,然後再做第3.1步

4、把total跟得到的資料拼起來:ealist =

5、把ealist轉成json格式資料return回去, ok

實現:

def getauthor(request):

if request.method == "get":

page = int(request.get.get('page',0))-1

rows = int(request.get.get('rows',0))

list = models.author.objects.all().order_by("-id")

alllist =

for li in list:

"id": li.id,

"head_img": str(li.head_img),

"name": li.name,

"email": li.email,

"***": li.***,

"depart": li.depart_id,

"phone": li.phone,

"account": li.account,

"publish_date": json.loads(json.dumps(li.publish_date, cls=dateencoder)),

})total = len(alllist)

if page < 0 or rows == 0:

json_data_list = alllist

else:

p = datagrid()

json_data_list = p.page(page, rows, total, alllist)

if request.method == "post":

page = int(request.post.get('page', '')) - 1

rows = int(request.post.get('rows', ''))

name = request.post.get("name", '')

*** = request.post.get("***")

depart = request.post.get("depart")

datefrom = request.post.get("datefrom")

dateto = request.post.get("dateto")

# 定乙個字典用於儲存前端傳送過來的查詢條件

search_dict = dict()

if datefrom:

search_sql = models.author.objects.filter(publish_date__gte=datefrom)

else:

search_sql = models.author.objects

if name:

search_sql = search_sql.filter(name=name)

if dateto:

search_sql = search_sql.filter(publish_date__lte=dateto)

if int(***)>-1:

search_sql = search_sql.filter(***__contains=***)

if (depart and int(depart)>-1):

search_sql = search_sql.filter(depart=depart)

# 序列化

list = search_sql.order_by("-id")

alllist =

for li in list:

"id": li.id,

"head_img": str(li.head_img),

"name": li.name,

"email": li.email,

"***": li.***,

"depart": li.depart_id,

"phone": li.phone,

"account": li.account,

"publish_date": json.loads(json.dumps(li.publish_date, cls=dateencoder)),

})total = len(alllist)

p = datagrid()

json_data_list = p.page(page, rows, total, alllist)

效果:

分頁優化:分頁公共類

呼叫分頁公共類的頁面

def getauthor(request):

if request.method == "get":

page = int(request.get.get('page',''))-1

rows = int(request.get.get('rows',''))

list = models.author.objects.all().order_by("-id")

alllist =

for li in list:

"id": li.id,

"name": li.name,

"email": li.email,

"***": li.***,

"depart": li.department_id,

"pthone": li.pthone,

"publish_date": json.loads(json.dumps(li.publish_date, cls=dateencoder)),

})total = len(alllist)

p = page()

json_data_list = p.page(page, rows, total, alllist)

公共類: common.py

#  分頁處理

class page():

def __init__(self):

self.rowpagelist =

self.json_data_list = {}

def page(self, page, rows, total, alllist):

# page: 當前頁碼   rows:**1頁面**行數  total:所有資料len,  alllist:所有資料

rowpagelist =

json_data_list = {}

try:

if (page == 0):

page = 1

if (rows > len(alllist)):

json_data_list =

else:

for s in range(page * rows):

json_data_list =

else:

ss = alllist[page * rows:]

if (len(ss) < rows):

json_data_list =

else:

for i in range(page * rows):

json_data_list =

return json_data_list

except exception as e:

print(e)

Mysql儲存過程(三) 處理分頁

分頁功能在任何應用中都比較常見,而 mysql 的儲存過程分頁必須通過動態 sql 來執行。分頁對應的 offset 和 row count 必須先用 concat 函式變成字串組裝到 sql 中 如語句 1 而不能直接使用 如語句 2 mysql 不支援 mysql 分頁功能的實現如下 所示 sq...

Mysql儲存過程(三) 處理分頁

分頁功能在任何應用中都比較常見,而 mysql 的儲存過程分頁必須通過動態 sql 來執行。分頁對應的 offset 和 row count 必須先用 concat 函式變成字串組裝到 sql 中 如語句 1 而不能直接使用 如語句 2 mysql 不支援 mysql 分頁功能的實現如下 所示 cr...

Mybatis 一對多分頁資料條數不正確處理方式

今天在進行一對多的left join處理的時候發現分頁的資料量不正確,後來把列印的sql去資料庫執行,查詢出來的確實是10條 1在xml裡進行更改collection的對映 usermap type com.abc.entity.sysuser uid column uid uname column...