python測試開發django-117.bootstrapTable結合Paginator分頁器查顯示表格

2021-12-18 從零開始學自動化測試

收錄於話題 #django 97個內容

前言

bootstrap 提供了table表格插件,可以快速幫我們實現分頁功能。這樣就不用在前端頁面上寫分頁邏輯,只需關注後端給對應數據就行。
bootstrap-table提供兩種分頁方式,client和server,即客戶端和服務端分頁;

bootstrap-table

下載所需要的包

Bootstrap 中文網:http://www.bootcss.com/
Bootstrap Table 官網:https://bootstrap-table.com/
JQuery 官網:https://jquery.com/

放置static文件中,目錄結構如下

模板中頭部引用

# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

<head>
{% load static %}
<title>bootstrap-table</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<link rel="stylesheet" type="text/css" href="/static/bootstarp/css/bootstrap.min.css" >
<link rel="stylesheet" type="text/css" href="/static/bootstrap-table/dist/bootstrap-table.min.css" >

<script type="text/javascript" src="/static/bootstarp/jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="/static/bootstarp/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/static/bootstrap-table/dist/bootstrap-table.min.js"></script>
<script type="text/javascript" src="/static/bootstrap-table/dist/locale/bootstrap-table-zh-CN.min.js"></script>

</head>

bootstrapTable實現數據加載

script 中bootstrapTable 幾個摘要參數
url: 訪問數據的接口,需返回json對象,如:{「total」: 2,」rows」: [{「id」: 0,」name」: 「Item 0」,」price」: 「$0」},]
columns: table表格中顯示的欄位和名稱
queryParams:查詢的時候,提交查詢參數

<body>
<div>
<h1>bootstrapTable實例</h1>
<hr/>

<div id="toolbar">
<button id="btn_add" type="button">
<span aria-hidden="true"></span>新增
</button>
<button id="btn_edit" type="button">
<span aria-hidden="true"></span>修改
</button>
<button id="btn_delete" type="button">
<span aria-hidden="true"></span>刪除
</button>
</div>

<table id="table"></table>
</div>
</body>
<script>
var url = '/teacher/info';
var columns = [
{
checkbox: true,
visible: true //是否顯示複選框
},
{
field: 'id',
title: 'ID'
}, {
field: 'name',
title: '姓名'
}, {
field: 'age',
title: '年齡'
},
{
field: 'tel',
title: '電話'
}
];
$("#table").bootstrapTable({
toolbar: '#toolbar', //自定義工具按鈕
url: url, //請求後臺的URL(*)
method: 'get', //請求方式(*)
cache: false, //是否使用緩存,默認為true,所以一般情況下需要設置一下這個屬性(*)
pagination: true, //是否顯示分頁(*)
pageSize: 10, //每頁的記錄行數(*)
pageList: [10, 20, 50, 100, 'All'], //可供選擇的每頁的行數(*)
sidePagination: "server", //分頁方式:client客戶端分頁,server服務端分頁(*)
pageNumber: 1, //初始化加載第一頁,默認第一頁
//search: true, //是否顯示表格搜索
showColumns: true, //是否顯示所有的列
showRefresh: true, //是否顯示刷新按鈕
minimumCountColumns: 2, //最少允許的列數
//height: 500, //行高,如果沒有設置height屬性,表格自動根據記錄條數決定表格高度
showToggle: true, //是否顯示詳細視圖和列表視圖的切換按鈕
columns: columns, //列參數
//detailView: true, //是否顯示父子表
//得到查詢的參數,會在url後面拼接,如:?rows=5&page=2&sortOrder=asc&search_kw=&_=1564105760651
queryParams: function (params) {
//這裡的鍵的名字和控制器的變量名必須一直,這邊改動,控制器也需要改成一樣的
var query_params = {
page: (params.offset / params.limit) + 1, //頁碼
size: params.limit, //頁面大小
//查詢框中的參數傳遞給後臺
//search_kw: $('#search-keyword').val(), // 請求時向服務端傳遞的參數
};
return query_params;
},

});
//得到查詢的參數

</script>
</html>

視圖

查詢結果必須是json格式:{「total」: 2,」rows」: [{},{}]},其中total和rows名稱必須保持一致,前端才能加載到數據

from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
from django.db.models import Q
from django.forms.models import model_to_dict
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

def teacherpage(request):
return render(request, 'boot_table.html')

def teacherInfo(request):
"""
查詢結果必須是json格式:{"total": 2,"rows": [{},{}]}
"""
if request.method == "GET":
# search_kw = request.GET.get('search_kw', None)
# 獲取分頁參數用於查詢對應頁面數據,page為第幾頁,size為每頁數據條數
page_num = request.GET.get('page', 1)
size = request.GET.get('size', 10)
# 查詢全部
teachers = Teacher.objects.all()
# 使用分頁器返回查詢的頁數和size
paginator = Paginator(teachers, per_page=size)
page_object = paginator.page(page_num)

# 總數
total = teachers.count()
# 查詢list of dict
rows = [model_to_dict(i) for i in page_object]
# print(rows)
return JsonResponse({'total': total, 'rows': rows})

頁面展示效果

默認每頁查詢10條數據

可以修改每頁顯示的條數

queryParams 查詢

queryParams查詢對應的參數

params.limit 是每頁的條數,一般對應size參數

params.offset 是起始位置的數目,對應的page需要計算得到(params.offset / params.limit) + 1

search_kw 對應搜索框內容,需設置.bootstrapTable屬性 search: true

toolbar 工具

toolbar 對應table表格上的新增/修改/刪除

<div id="toolbar">
<button id="btn_add" type="button">
<span aria-hidden="true"></span>新增
</button>
<button id="btn_edit" type="button">
<span aria-hidden="true"></span>修改
</button>
<button id="btn_delete" type="button">
<span aria-hidden="true"></span>刪除
</button>
</div>

此部分後端接口還沒實現

參考教程:https://www.cnblogs.com/landeanfen/p/4976838.html

bootstrap-table官方文檔:https://examples.bootstrap-table.com/
bootstrap-table API在線查看效果:https://live.bootstrap-table.com/

2021年第 9 期《python接口web自動化+測試開發》課程,10月17號開學!

加量不加價(新增postman, 贈送selenium和python基礎2個課

本期上課時間:10月17號-1月9號,每周六、周日晚上20:30-22:30

聯繫微信/QQ:283340479

相關焦點

  • Django分頁完整示例
    大家好,在這篇文章中,我們將展示django的分頁完整的一個實例,當我們打算用Django中開發博客時,需要將帖子列表分別展示到多個頁面上,在這方面,
  • Django實現分頁功能
    這和我們在開發階段處理數據信息是一樣的,因為大多數情況下,我們往往會面對很多的數據信息,為了讓這些信息顯示的更便於閱讀以及減小數據的提取量從而減少伺服器的壓力等,我們就會採用分頁的處理方法,Django 為開發者提供了內置的模塊 Paginator 類。它的使用場景處處可見,比如某寶網購物時,顯示下一頁的商品,或者是用數字 1、2、3 等標註的頁碼,都屬於分頁的設計。1.
  • python測試開發django-1.開始hello world!
    前言當你想走上測試開發之路,用python開發出一個web頁面的時候,需要找一個支持python語言的web框架。
  • python測試開發django-132.Bootstrap Table設置表頭樣式(theadClasses)
    收錄於話題 #django設置theadClasses屬性沒設置theadClasses屬性時候,背景色默認是白色bootstrap背景顏色設置.bg-primary       主要的.bg-success    成功.bg-info       信息.bg-warning  警告.bg-danger   危險
  • python測試開發django-184.bootstrap-table 前端分頁搜索相關配置
    收錄於話題 #django本篇先學習擇前端分頁(client),在頁面搜索篩選數據bootstrap table 查詢搜索配置表格內容前端搜索,不查詢資料庫bootstrap table表格搜索可以通過以下屬性進行設置屬性名稱值說明searchtrue開啟搜索輸入框searchOnEnterKeytrue回車後執行搜索strictSearchtrue完全匹配搜索,不是like模糊查詢
  • 使用 Django 進行測試驅動開發
    (TDD),就是先編寫測試用例,然後編寫代碼來滿足測試用例,具體包含以下步驟:通常情況下,我們都是先寫代碼,然後編寫測試用例,因此測試驅動開發是反直覺的,那為什麼還要這麼做呢?基於以下幾點原因:TDD 可以被認為是根據測試用例來說明需求。此後編寫原始碼,重點是滿足這些要求。當測試最終通過時,你可以確信已滿足要求。這種專注可以幫助開發人員避免範圍蔓延。TDD 可以通過較短的開發周期提高開發效率。一次解決測試用例中的個別可以最大限度地減少幹擾因素。重大更改將更容易跟蹤和解決。減少了調試工作,提高了效率,並且將更多時間花在開發上。編寫測試時考慮到了需求。
  • python測試開發django-76.ORM查詢之Q查詢
    查詢 or如有個 Card 模型,表裡面有以下數據查詢 card_user 名稱為 YOYO 或 yoyo的數據,使用 SQL 可以這樣查詢select * from yoyo_card where card_user = 'YOYO' or 'yoyo';filter() 查詢,查詢或關係MyDjango>python
  • Python + Django 開發實戰(下)
    接下來談談日誌記錄,單元測試和程序調優和重構等內容。    這一篇要談的內容,也是開發中不可忽視的環節。 開發中日誌記錄能幫我們記錄信息定位問題;單元測試幫助我們在迭代開發過程及時發現問題,減少bug的引入; 而程序調優與重構,是一個永恆的話題。 日誌的重要性想必不用多說。 在我看來,日誌的作用主要有兩點:運營數據支撐。
  • python測試開發django -142.Bootstrap 表單(form)
    收錄於話題 #djangoplaceholder="Email"> </div> <div> <label for="Password1">密碼</label> <input type="password" id="Password1" placeholder
  • Python利用Django 構建Rest Api: 快速入門教程
    點擊上方「測試開發技術」,選擇設為「設為星標」
  • python測試開發django-56.模板渲染markdown語法+代碼高亮
    markdown先使用pip按照markdown模塊,用於轉換markdown為htmlpip install markdown在後臺頁面編輯的markdown內容,markdown裡面插入代碼一般有兩種方式:一種是把代碼全部選中,然後縮進(四個空格)第二種是代碼部分用三個```包起來,後面可以跟著對應語言python,如下(這裡不太好展示,前面的\
  • 結合 Bootstrap + Vue 組件實現 Laravel 異步分頁功能
    不管你使用查詢構建器還是 Eloquent 模型類,都可以在一分鐘內完成分頁功能,Laravel 還為我們提供了豐富的自定義支持,不管是後端的分頁器,前端的分頁連結,還是整個分頁視圖,都可以按需進行定製化開發,非常方便。
  • python測試開發django-37.外鍵(ForeignKey)查詢
    : verbose_name = "帳戶_個人資料" verbose_name_plural = verbose_name def __str__(self): return self.card.card_user之後執行 makemigrations 和migrate,同步數據python
  • Python Django之路與您同行
    主要在這裡寫下自己的學習筆記、軟體測試思考及讀書感悟等,後續可能會系統的介紹一些python、django、移動端自動化測試、接口自動化測試、性能測試等。歡迎您的光臨!要想深入測試,必須了解功能邏輯,對數據流及網站架構比較清楚,這點也說過多次,真的很重要,必須要體現在工作當中,養成習慣,絕對不要對自己測試過的功能模塊其中的技術實現不清楚。這樣測試路會不好走!!!
  • 8個能提高Django開發效率的Python包
    不再需要從幾個不同的應用程式中導入數據,來測試一個複雜的關係! clean_pyc命令會將項目目錄中所有位置的.pyc項目刪除。 create_template_tags用於在您指定的應用程式中創建一個模板標籤目錄結構。 describe_form將顯示模型的表單定義,然後您可以將其複製/粘貼到forms.py中。
  • 10道題教你使用python Django框架來實現web應用,值得收藏
    代碼和數據做好備份python和django升級後,上線前需要充分測試。點擊添加圖片描述(最多60個字)2、剛學習django的nginx部署,一直不清楚處理高並發的原理,大神可以解釋下麼?我簡單說一下我的理解。django WSGI是單線程的,就是說一個請求處理完了才能響應另一個請求。
  • python測試開發django-38.ManyToMany查詢
    Teacher, verbose_name="老師") class Meta: verbose_name = "學生" verbose_name_plural = verbose_name def __str__(self): return self.name之後執行 makemigrations 和migrate,同步數據python
  • 編寫自定義 django-admin 命令
    Threadfrom django.core.management.base import BaseCommand, CommandErrorfrom django.core.paginator import Paginatorfrom idcops.models import Deviceclass Command(BaseCommand
  • python程式設計師嘔心瀝血整理 Django 優秀資源大全
    python-webpack, star:58 - webpack 的 Python 綁定包,並與 django 集成。認證增強或擴展了 Django 認證方法的相關包。測試有助於測試代碼或創建測試數據的包。behave-django, star:29 - 將行為驅動開發 (Behave BDD) 集成到 Django 中。django-behave, star:173 - Behave BDD 模塊的 TestRunner。
  • django-admin和manage.py用法
    開篇話:我們在Django開發過程中,命令行執行最多的應該就是python manage.py <command>,今天聊聊manage.py這個命令。記錄要點:django-admin和manage.py 能做同樣的事情 像我們常用的python manage.py runserver,用django-admin也可以操作:django-admim runserver 注意: django-admin需要提前提前配置好DJANGO_SETTINGS_MODULE環境變量