2017-02-25 66 views
0

我想在我的Flask應用中使用來自sqlite的數據實現服務器端處理。我是一個新手,所以我無法弄清楚什麼是錯的。到目前爲止,我已經來到了這個:服務器端處理數據表和燒瓶

HTML:

<table id="myTable" class="table table-striped" style="width:100%" > 
      <thead> 
       <tr> 
      <th>Time</th> 
      <th>Mean Current</th> 
      <th>Vapour Pressure</th> 
      <th>Mean Voltage</th> 
      <th>Temperature</th> 
      <th>Humidity</th> 
      <th>Bar Pressure</th> 
      <th>RPM</th> 
      <th>Wind Sector</th> 
      <th>Wind Speed</th> 
      <th>Air Density</th> 
      <th>DC Voltage</th> 
      <th>Power Sector</th> 
      <th>Furling Angle</th> 
      <th>Yaw angle</th> 
      </tr> 
     </thead> 
      </table> 

的Javascript:

$(document).ready(function() { 
    $('#myTable').DataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": "/page_test" 
    }); 
}); 

視圖功能:

@app.route('/page_test') 
def page_test(): 
    data = json.dumps(meas[2]) 
    print data 
    return data 

MEAS [2]是我的字典:

[dict((c.description[i][0], value) \ 
       for i, value in enumerate(row)) for row in c.fetchall()] 

在 「打印數據」 一切打印精細,這樣的:

{ 「MeanCurrent」:0.05933, 「溫度」:15.095, 「YawAngle」:0.0 「MeanVoltage」:0.67367, 「電壓DC」:3.18309 ,「PowerSec」:0.06923,「FurlingAngle」:-0.2266828184,「WindSpeed」:1.884,「VapourPressure」:1649.25948,「Humidity」:0.4266,「WindSector」:0「AirDensity」:1.23051「BarPressure」:1020.259, 「time」:「2015-04-22 20:58:28」,「RPM」:0.0,「ID」:1357}這個乘以行數

但是,當我運行應用程序並插入查詢時,表格只顯示「th」標籤,並且在表格的頂部寫有「Processing ...」,但沒有顯示數據。在我的燒瓶應用程序的終端,則顯示一個巨大的字符串,這是一個小樣品:

/page_test繪製= 2分&列%5B0%5D%5Bdata%5D = 0 &列%5B0%5D%5Bname %5D = &列%5B0%5D%5B可採集%5D = true &列%5B0%5D%5B可訂正%5D =真&列%5B0%5D%5B搜索%5D%5B值%5D = &列%5B0%5D%5B搜索%5D%5Bregex%5D =假&列%5B1%5D%5Bdata%5D = 1分&列%5B1%5D%5Bname%5D = &列%5B1%5D%5Bsearchable%5

,這裏是一個屏幕截圖:screenshot from web app

每次點擊th標籤時,都會再次出現相同的字符串。看起來我錯過了一些重要的東西,但由於這是我的第一個應用程序,我無法弄清楚它是什麼。任何建議修改代碼將不勝感激。

回答

1

Server-side processing是一種設置,需要您擁有一個數據庫腳本,能夠在您自己的服務器/數據庫上覆制DataTables的許多核心功能,以管理非常大的數據集。

傳遞給腳本的所有信息(例如,那些長信息)是您需要用來查詢數據庫以返回DataTables呈現結果的輸入。

如果你希望數據表,從您的水壺終端加載的數據,然後管理所有的處理在內部進行修改:刪除serverSide設置,讓你的數據在正確的地方結束了加列配置:

的Javascript:

$(document).ready(function() { 
    $('#myTable').DataTable({ 
     "processing": true, 
     "ajax": "/page_test", 
     // add column definitions to map your json to the table 
     "columns": [ 
      {data: "time"}, 
      {data: "MeanCurrent"}, 
      ... 
     ] 
    }); 
}); 

DataTable Initialization Options:如果單擊「列」按鈕,它可以顯示各種配置的每個「列」接受,無論是排序,訂購,定製的渲染,等等...

的Python:

from flask import jsonify 

@app.route('/page_test') 
def page_test(): 
    return jsonify(meas[2]) 
+0

如果我刪除了服務器端的設置也不會運行視圖功能在所有。所以我將它保留爲True,並按照您的建議添加了列。同樣的事情仍然存在。我認爲我應該做更多的事情,比如發送每頁顯示數量或類似的東西。還顯示「不能讀取未定義的屬性長度」。 – tzoukritzou