前言

參加今年MOPCON 2020 剛好聽到LINE自家工程師演講開發Python套件Lotify,此套件已經整合LINE API呼叫操作部份, 來試試看發送基本文字訊息與訂閱基本實作。

此筆記範例 GitHub: https://github.com/s123600g/LINENotifyDemo_Lotify

環境建置

使用Flask做一個簡單網站框架,搭配Vue3來做一個簡單資料操作(這只是作者個人自己還在學習Vue,套入簡單練習應用),在Ubuntu 20.04環境下實作。

pip3 install -r requirements.txt

因應Flask框架設置,所有靜態檔案預設都放置在static/底下,其實是對應在Config.py內設置

static_folder = 'static'

設置一個指定放置靜態檔案目錄名稱,也就是static/

package.json在專案目錄內static底下

npm i

前面說到所有靜態檔案都在static底下,所以package.json也會在裡面,必須要先在終端機切換位置至static/,在做上面指令進行Package檔案下載補齊,完成後就會在static底下產生一個node_modules目錄。

要前往LINE Notify進行服務建立,進去後需要登入個人的LINE帳號,然後建立起服務設置大概如下

其中需要注意的是Callback URL這個項目,它會跟用戶訂閱動作有相關,在用戶訂閱完成後,LINE Notify會根據這個項目設定的網址進行導向,而我們需要透過這個網址去接收LINE Notify所回傳的用戶訂閱授權token,也就是說我們提供一個管道讓LINE Notify去將頁面導向,同一時間導向完畢後面就由我們這邊接手處理後面事情,在這範例中設置了 /api/user_callback 連結,進行接收授權token後再自動導向到首頁去。

在導向回來過程URL為,http://127.0.0.1:8080/api/user_callback?code=,用戶授權token會放在url參數code,將其取回後再放入SQLite DB存放,完成後再透過redirect導向回去首頁。

這部份在Config.py內設置

CLIENT_ID = "Vf.........................v"
SECRET = "0l.............................N6"
URI = "http://127.0.0.1:8080/api/user_callback"
參數對照表

啟動測試伺服器

sudo sh StartServer.sh

在網址列輸入 `http://127.0.0.1:8080/`即可看到下面畫面

筆記內容同步在個人HackMD: https://hackmd.io/@JYU/rJGCGZseP

在下載Datatables 套件包時,在Extensions內部Buttons項目記得要勾選 HTML5 export
這樣才會把必要模組功能一起包進套件包裡。

關鍵參數設置
Datatables 主體渲染樣式設置

dom: 'Bfrtip'

最重要的是`B`這個值,要開啟Datatables Button 功能模組。

buttons: [ ]

這裡面可以定義Button功能模組內有哪些,例如在官方說明文件可以看到有這些

'copy', 'csv', 'excel', 'pdf', 'print'
  • copy → 複製整個Datatables內容。
  • csv → 將整個Datatables內容匯出成csv檔案下載。
  • excel → 將整個Datatables內容匯出成excel檔案下載。
  • pdf → 將整個Datatables內容匯出成pdf檔案下載。
  • print → 將整個Datatables內容進行列印。

不使用官方預設配置,改為以下設置下載Excel為例

buttons: [
{
extend: 'excelHtml5',
title: "MyDatatables_Excel",
text: "匯出Excel",
customize: function (xlsx) {
}
}
],
  • extend → 此按鈕繼承自哪一個模組,在這裡要繼承`’excelHtml5'`,此為模組名稱。
  • title → 檔案名稱與標題都跟此參數有關,如果沒設置的話會跑預設Datatables自己定義名稱。
  • text → 按鈕顯示名稱。
  • customize → 如果要針對內部資料內容做設置,在此進行資料處理。

預設匯出下載的內容整個第一列 (A)會是一個跨欄置中的標題列,內部標題依據 title 設定的值。

  1. DOM → https://datatables.net/reference/option/dom
  2. Buttons → https://datatables.net/reference/button/
  3. File namehttps://datatables.net/extensions/buttons/examples/html5/filename.html
  4. File export → https://datatables.net/extensions/buttons/examples/initialisation/export.html
  5. excel — https://datatables.net/reference/button/excel

李俊諭

持續探索、學習、默默筆記資訊技術學習者。

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store