欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

django Layui界面點擊彈出對話框并請求邏輯生成分頁的動態(tài)表格實例

 更新時間:2020年05月12日 16:20:46   作者:煢夜  
這篇文章主要介紹了django Layui界面點擊彈出對話框并請求邏輯生成分頁的動態(tài)表格實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1、首先,界面上有個按鈕觸發(fā)操作:

<button type="button" class="layui-btn layui-btn-normal" id="user_list">用戶列表</button>

2、點擊這個按鈕觸發(fā)之后,會彈出一個對話框并請求view,從數(shù)據(jù)庫中得到數(shù)據(jù)并產生動態(tài)表格,

其中script代碼如下:

<script>
 layui.use(['table'],
  function () {
   var table = layui.table
 
   $("#user_list").click(function(){
    layer.open({
      type: 1,
      title: '用戶信息',
      area: ['800px', '600px'], //寬高
      content: '<div class="layui-card-header"><div class="layui-form-text">用戶信息列表</div>' +
      '</div><div class="layui-form-item">' +
      '<table id="user_table" lay-filter="user_table"></table></div>',
      success: function () {
       table.render({
        elem: '#user_table',
        id: 'user_table',
        height: 480,
        method: 'post', //接口http請求類型,默認:get
        url: '{% url 'user:user_list' %}',
        request: {
         pageName: 'page', //頁碼的參數(shù)名稱,默認:page
         limitName: 'limit', //每頁數(shù)據(jù)量的參數(shù)名,默認:limit
        },
        response: {
         statusName: 'code', //規(guī)定數(shù)據(jù)狀態(tài)的字段名稱,默認:code
         statusCode: 0, //規(guī)定成功的狀態(tài)碼,默認:0
         msgName: 'msg', //規(guī)定狀態(tài)信息的字段名稱,默認:msg
         countName: 'count', //規(guī)定數(shù)據(jù)總數(shù)的字段名稱,默認:count
         dataName: 'data', //規(guī)定數(shù)據(jù)列表的字段名稱,默認:data
        },
        page: true, //是否分頁
        limit: 10, //每頁顯示的條數(shù)
        limits: [10, 20, 30], //每頁條數(shù)的選擇項,默認:[10,20,30,40,50,60,70,80,90]。
        cols: [
         [
          {
           field: 'username', //字段名
           title: '用戶名', //標題
           width: 150,
           sort: true, //是否允許排序 默認:false
           fixed: 'left' //固定列
          }, {
          field: 'sex', //字段名
          title: '性別', //標題
          width: 100,
          sort: true //是否允許排序 默認:false
          //fixed: 'left' //固定列
         }, {
          field: 'age', //字段名
          title: '年齡', //標題
          width: 100,
          sort: true //是否允許排序 默認:false
          //fixed: 'left' //固定列
         }, {
          field: 'mobile', //字段名
          title: '手機', //標題
          width: 100,
          sort: true //是否允許排序 默認:false
          //fixed: 'left' //固定列
         }, {
          field: 'address', //字段名
          title: '地址', //標題
          width: 150,
          sort: true //是否允許排序 默認:false
          //fixed: 'left' //固定列
         },{
          field: '', //字段名
          title: '操作', //標題
          toolbar: '#bar'
         }
         ]
        ],
       });
      },
      cancel: function () {
       layer.closeAll();
      }
     })
   });
  });
 
</script>
 
<script type="text/html" id="bar">
 <button class="layui-btn layui-btn-normal">查看</button>
 <button class="layui-btn layui-btn-normal">編輯</button>
</script>

3、接著,所請求的view的方法,即為上面定義的url屬性,{% url 'user:user_list' %},其中url配置,以及邏輯實現(xiàn)代碼分別如下:

from django.urls import path
 
urlpatterns = [
 # 查詢用戶列表
 path('user_list/', UserQuery.as_view(), name="user_list"),
]
from apps.user.models.user_model import UserInfo
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
 
class UserQuery(View):
 """
 用戶信息查詢
 """
 def post(self, request):
  user_list = UserInfo.objects.objects.get_queryset().order_by('id')
  data = dict()
  data_items = []
  for item in user_list :
   user_dict = {"username": item.username, "age": item.age, "sex": item.sex, "mobile": item.mobile,
       "address": item.address}
   data_items.append(user_dict )
  data.__setitem__("data", data_items)
  data.__setitem__("code", 0)
  data.__setitem__("msg", "")
  data.__setitem__("count", len(field_list))
  return JsonResponse(data)
 
 @csrf_exempt
 def dispatch(self, *args, **kwargs):
  return super(UserQuery, self).dispatch(*args, **kwargs)

注:

(1)、通過查詢UserInfo model底下的數(shù)據(jù),然后分別循環(huán)這個列表,把動態(tài)表格所需要顯示的值,填充到一個字典底下,并追加進列表當中,最后再統(tǒng)一構成一個字典data,把列表數(shù)據(jù),狀態(tài)碼,返回信息,數(shù)量返回回去。

(2)其中通過ajax請求時,可能會有csrf跨域的限制,因為我們沒有構造一個表單,并在表單底下加個 {% csrf_token %} ,導致請求不過去,所以要加個@csrf_exempt注解方式來解決。

補充知識:django數(shù)據(jù)接口與layUI框架數(shù)據(jù)表格結合:數(shù)據(jù)渲染和真實分頁

第一步 :

通過查詢數(shù)據(jù)轉化為layui的數(shù)據(jù)接口模式

{“code”: 0, “msg”: “”, “count”:總數(shù), “data”: 查詢的數(shù)據(jù)}

自行定義訪問路徑,當url訪問 xxxx/tasks/data/ 路徑時:訪問視圖response_data,將數(shù)據(jù)傳到前端,通過html可查看相關代碼

視圖函數(shù)views.py

import json
def response_data(request):
 dates=AssetInfo.objects.all()#自行創(chuàng)建測試數(shù)據(jù)。
 dataCount = dates.count()#數(shù)據(jù)總數(shù)
 lis=[]
 for i in dates:
  dict={}
  dict['jobname']=i.jobname#與前端一一對應,自行設置要展示的字段
  dict['Departments'] = i.Departments.lm_unit#外鍵字段
  dict['groups'] = i.groups.variables_name#外鍵字段
  dict['email'] = i.email
  dict['status'] = i.status
  dict['taskNo'] = i.taskNo
  dict['create_time'] = i.create_time
  lis.append(dict)
 pageIndex = request.GET.get('page') #前臺傳的值,
 pageSize = request.GET.get('limit') #前臺傳的值
 pageInator = Paginator(lis, pageSize)#導入分頁模塊分頁操作,不寫前端只展示一頁數(shù)據(jù),
 contacts = pageInator.page(pageIndex)#導入分頁模塊分頁操作,不寫前端只展示一頁數(shù)據(jù),
 res=[]
 for i in contacts:
  res.append(i)
 print(res)
 Result = {"code": 0, "msg": "", "count":dataCount, "data": res}
 # json.dumps(Result, cls=DateEncoder)沒有時間字段問題可直接返回此代碼。有就返回下面代碼
 return HttpResponse(json.dumps(Result, cls=DateEncoder), content_type="application/json")

#解決時間字段json問題
class DateEncoder(json.JSONEncoder):
 def default(self, obj):
  if isinstance(obj,datetime.datetime):
   return obj.strftime("%Y-%m-%d %H:%M:%S")
  else:
   return json.JSONEncoder.default(self,obj)

html代碼

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>Layui</title>
 <meta name="renderer" content="webkit">
 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
 <link rel="stylesheet" href="/static/layui-v2.5.5/layui/css/layui.css" rel="external nofollow" media="all">
 <!-- 注意:如果你直接復制所有代碼到本地,上述css路徑需要改成你本地的 -->
</head>
<body>

<table class="layui-hide" id="test"></table>

<script src="/static/layui-v2.5.5/layui/layui.js" charset="utf-8"></script>
<!-- 注意:如果你直接復制所有代碼到本地,上述js路徑需要改成你本地的 -->

<script>
layui.use('table', function(){
 var table = layui.table;

 table.render({
 elem: '#test'
 ,url:'/tasks/data/'#數(shù)據(jù)接口
  ,page: true
  ,limit:5
  ,limits:[5,15,20]
 ,cols: [[
 {field: 'jobname', title: '任務名'}
   , {field: 'Departments', title: '部門'}
   , {field: 'groups', title: '配置'}
   , {field: 'email', title: '郵箱'}
   , {field: 'status', title: '狀態(tài)'}
   , {field: 'taskNo', title: '隊列狀態(tài)' }
   , {field: 'create_time', title: '創(chuàng)建時間'}
 ]]

 });
});
</script>

</body>
</html>

效果圖

以上這篇django Layui界面點擊彈出對話框并請求邏輯生成分頁的動態(tài)表格實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python入門教程(八)PythonCasting用法

    Python入門教程(八)PythonCasting用法

    這篇文章主要介紹了Python入門教程(八)PythonCasting用法,Python是一門非常強大好用的語言,也有著易上手的特性,本文為入門教程,需要的朋友可以參考下
    2023-04-04
  • 在python中pandas的series合并方法

    在python中pandas的series合并方法

    今天小編就為大家分享一篇在python中pandas的series合并方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python爬蟲增加訪問量的方法

    python爬蟲增加訪問量的方法

    這篇文章主要介紹了python爬蟲增加訪問量的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • python實現(xiàn)圖片轉字符畫的完整代碼

    python實現(xiàn)圖片轉字符畫的完整代碼

    這篇文章主要給大家介紹了關于python實現(xiàn)圖片轉字符畫的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python3多線程處理爬蟲的實戰(zhàn)

    Python3多線程處理爬蟲的實戰(zhàn)

    本文主要介紹了Python3多線程處理爬蟲的實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • python中mediapipe庫踩過的坑實戰(zhàn)記錄

    python中mediapipe庫踩過的坑實戰(zhàn)記錄

    MediaPipe是由google制作的開源的、跨平臺的機器學習框架,可以將一些模型部署到不同的平臺和設備上使用的同時,也能保住檢測速度,下面這篇文章主要給大家介紹了關于python中mediapipe庫踩過的坑的相關資料,需要的朋友可以參考下
    2023-04-04
  • python通過colorama模塊在控制臺輸出彩色文字的方法

    python通過colorama模塊在控制臺輸出彩色文字的方法

    這篇文章主要介紹了python通過colorama模塊在控制臺輸出彩色文字的方法,實例分析了colorama模塊的功能及相關使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • 淺談tensorflow之內存暴漲問題

    淺談tensorflow之內存暴漲問題

    今天小編就為大家分享一篇淺談tensorflow之內存暴漲問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python實現(xiàn)提取谷歌音樂搜索結果的方法

    Python實現(xiàn)提取谷歌音樂搜索結果的方法

    這篇文章主要介紹了Python實現(xiàn)提取谷歌音樂搜索結果的方法,涉及Python針對谷歌音樂相關信息的獲取技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Python實現(xiàn)socket非阻塞通訊功能示例

    Python實現(xiàn)socket非阻塞通訊功能示例

    這篇文章主要介紹了Python實現(xiàn)socket非阻塞通訊功能,結合實例形式分析了Python使用socket模塊進行非阻塞通訊的原理、多線程及客戶端、服務器端相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-11-11

最新評論