2019年9月30日 星期一

Django 資料新增刪除與修改


之前曾經簡單介紹過Django基礎,

也介紹過admin管理資料庫的兩種方法,

今天就來教大家:

Django 資料新增刪除與修改

上次有提到過,

Django不需要撰寫SQL語言來修改資料,

只需要對Django ORM作處理,

假設今天有個學生資料庫如下:

class student(models.Model):
  cname = models.CharField(max_length=50, blank=False, unique=True)
  caddr = models.CharField(max_length=100, blank=True)

透過網址傳送username來新增資料,


[model_name].object.create()

再透過save()即可新增一個物件


def add_user(request):
    username = request.GET.get('username')
    cuser = student.objects.create(cname=username)
    cuser.save()
    return HttpResponse(cuser.cname)


def del_user(request):
    username = request.GET.get('username')
    duser = student.objects.get(cname=username)
    duser.delete()
    return HttpResponse(duser.cname)


def modify_user(request):
    username = request.GET.get('username')
    muser = student.objects.get(cname=username)
    muser.cname = 'test'    
    muser.save()
    return HttpResponse(muser.cname)

至於修改部分:

則是以

[model_name].object.get(cname=username)

先取得 cname = username 的 物件,

直接修改欄位的值,

此範例為 cname ,

改完以後再以 save() 儲存即可,


刪除的話:

透過

[model_name].object.get(cname=username)

找到要刪除的物件,

直接以 delete() 方法刪除即可。


如同之前所說,

資料新增刪除與修改,

都沒有使用到 SQL 語言,

這對設計者相當的便利。



2019年9月27日 星期五

程式視覺化工具 Python Tutor


要學好程式語言,

除了要有基本邏輯概念以外,

練習是精通程式語言的最佳辦法,

除了透過線上解題系統自行練習以外,

用程式視覺化工具幫助學習,

這就是今天的主題:

程式視覺化工具 Python Tutor


Python Tutor是一個線上工具,

它提供一個線上撰寫程式的平台以外,

也能將事先寫好的程式碼,

分享給其他人當作範例,

最重要的是它提供控制按鈕讓使用者能逐行執行程式碼,

並顯示記憶體中變數與物件的變化,

藉由觀察變數與物件的實際值,

幫助初學者學習。

 從Python Tutor首頁進入之後,

可看見撰寫程式碼的編輯器,

底下有兩個按鈕,

左邊功能為產生範例程式,

右邊則是讓使用者能線上撰寫程式,

底下是一個程式演示的範例:


可以看到使用者能夠透過左下方的back與forward控制程式執行,

而記憶體中的變數與物件則會即時反應在右半的frame中,

輸出畫面的資料會顯示在右上角。

初學者憑空想像與觀看實際值的變化,

當然是視覺化演示的範例程式來的效率高,

系統會輔以雙色箭頭分別代表目前執行(綠色箭頭)與下一行要執行(紅色箭頭)的程式碼,

使用者能一邊控制程式碼執行,

一邊觀察變數與物件的變化。

至於範例程式如何演示,

底下附上一個範例程式讓大家玩下:



49選6大樂透選號程式,

會在 1 ~ 49 間,

取六個不重複的數字














2019年9月24日 星期二

在Open edX新建課程範例教學


之前曾經介紹過如何安裝Open edX ,

也介紹了一些xblock模組,

那如何在Open edX上面開課呢?

這就是今天的重點了:

在Open edX新建課程範例教學

Open edX是一個功能強大的線上教學平台,

今天就來當個不及格教授吧,

首先要到Studio home中找到New ourse按鈕,


填寫如 課程名稱, 開課單位,  開課編號,開課時程 等等資訊,

完成後選擇Create就能線上開課,


課程建立後,

第一不就是要建立課程的大綱,

可在此設定課程的各個章節,

在ironwood版本中,

還能看到 Checklists,

這是要幫助使用者新增一門課程的檢查清單,


點選進入後,

系統對目前課程已設定與未設定哪些項目,

都有一個建議的列表提供開課參考,


設定完課程大綱之後,

最重要的應該就是開課時程了,

找到 Settings - > Schedule & Details  ,

一些課程的基本資訊,

例如開課網址, 課程簡介, 課程時程等等,

在此處都可設定


找到 Settings - > Grading

可設定此課程的練習的評分準則或者權重,

以及通過此課程的標準


最後,

可在Course Team中,

將課程團隊的成員加入


全部都設定完畢後,

等到設定的開課時間一到,

就能在線上找到此課程.












2019年9月16日 星期一

Xblock模組-Staff Graded Assignment


之前提到過Open edX可透過xblock擴展其功能,

今天就來介紹一個好用的模組:

Xblock模組-Staff Graded Assignment

Staff Graded Assignment (簡稱為SGA),

同時是一個Django App 也是一個Xblock模組,

主要功能在於讓學生上傳檔案,

教師則根據學生所上傳的檔案評分,

可作為提交作業並給予作業分數的模組來用。

原始碼位置:

原始碼github

根據Readme安裝模組之後

要到studio的settings中的進階設定(Advanced Settings)中,

新增 edx_sga 模組

接著到單元中選擇點選Advanced的按鈕,

點選新出現的模組Staff Graded Assignment,


新增該模組的畫面如下,

授課教師可點選Upload your assignment按鈕上傳自己的範例文件,


在EDIT按鈕中,

設定該作業的權重與總分,


也可以點選Grade Submissions查看學生上傳作業的情形,



切換到LMS中,

學生首次看到的畫面如下,

透過Upload按鈕選擇檔案,

在按下Submit按鈕即可繳交作業,


在授課教師尚未給予分數前,

系統會顯示尚未給分,


授課教師在CMS中,

點選Grade Submissions可查詢到繳交情形,

再透過Enter grade按鈕,

就能為此學生繳交的作業給予評分,


除了評分以外,

授課教師也可給予評語,

或者給予參考文件讓學生參閱,


最後,

學生就能看到作業的得分,

授課教師的評語,

還有授課教師給予的參考文件。










2019年9月13日 星期五

Django透過admin後台管理資料庫的第二種方法


之前提到從admin後臺管理資料庫,

但全數加入並非是個有效率的方法,

今天要來教大家

Django透過admin後台管理資料庫的第二種方法


要有效率的管理,

就要有針對性,

針對需要被管理的欄位即可,

上一次利用

admin.site.register(資料庫名)

將資料庫加入admin後台管理,


既然這次有針對性,

就必須建立一個

class xxxxxAdmin(admin.ModelAdmin) :
     list_display = ( ' 欄位一 ', ' 欄位二 ' )
admin.site.register(資料庫名, xxxxxAdmin )

這樣就能單獨挑出需要的欄位進行管理

底下為上述範例在後台中顯示的狀況,



除此之外,

可以透過

list_filter = ('條件', )

加入條件過濾方便使用者找尋,


透過

search_fields[ '欄位',]

方便使用者搜尋資料,


或者使用

ordering = (' 欄位',)

就能將資料由小到大排序,

若要由大到小就在上述命令的欄位前方加上減號 '  -  '

即可。

這些都是Django以admin後台管理資料庫的基礎應用,

其他還有許多實用功能,

下次有機會再做詳述,

這裡是不及格研究室,

we are here , we are coding


程式開發的版本控制- Git 分支應用篇


之前在程式開發的版本控制- Git 應用篇中,

有提到過本機分支的建立,

今天要介紹另一種的分支應用:

程式開發的版本控制- Git 分支應用篇

當今天需要使用的分支在遠端server上,

這時就不能夠使用之前所提到的指令,

首先可先在專案中打git branch -a

此指令會秀出遠端上所有的分支(紅色),

在目前的分支前方會有*號(綠色),


找到想修改的分支後,

執行

git checkout -b 本地分支名 遠端分支名

就能夠以本地分支名複製一份遠端分支的code,

在Git 1.6.2 之後的版本,

可使用

git checkout --track 遠端分支名

這在Git 中稱之為tracking branch


在此分支上做完修改之後,

要將此新分支上傳至遠端伺服器上,

執行

git push -u origin 本地分支名:遠端分支名


另外,

如果本機分支的版本太舊,

也能直接打

git fetch 遠端分支名

此指令會針對該分支從遠端下載更新,

git pull的差別在於:

git pull 是同時做git fetchgit merge,

不僅下載更新,還順便merge code,

以上就是遠端分支相關的應用,

本機端的應用就比較簡單些,

幾個常用的指令:


git checkout -b 分支名

這個指令做了兩件事,

git branch 分支名   (新建)

git checkout 分支名 (切換至該分支)

在此分支上做了必要的修改之後,

透過

git checkout master

回到分支master,

並執行:

git merge 分支名

將剛才在分支上所做的更改合併到master中,

如果該分支不再需要更改,

可透過

git branch -d 分支名

將該分支移除

除了命令模式以外,

也能夠透過 IDE 進行分支的切換,

這裡以 Pycharm 作為範例:

到 Pycharm 上方工具列找到 VCS ,

接著找到 Git 的 Branches ,


Pycharm 會列出目前所有的分支,

從清單上面選取要使用的分支即可。






2019年9月10日 星期二

Magento2遇到one or more indexers are invalid解決方案


索引是Magento轉換資料的方式,

用以提升商店性能,

隨著資料更新,

往往需要更新(update)或者重編制(reindex),

舉凡從產品類別,產品價格,產品屬性,庫存......等等,

幾個重要的資料,

Magento都會建立索引,

這些索引可在index management中找到。

在資料異動之後,

系統會自動提醒使用者更新索引,


當出現此訊息時,

有底下幾種解決方式:

1.
使用命令列,

手動執行 "php /magento安裝目錄/bin/magento indexer:reindex"


2.
使用cron,
排程執行"php /magento安裝目錄/bin/magento indexer:reindex"


3.
安裝第三方套件,從後台更新index

OnlineJudge線上評測系統-兩數相加範例


之前介紹過OnlineJudge線上評測系統,

坐而言不如起而行,

寫程式就是要實作才印象深刻,

今天就帶大家體驗下:

OnlineJudge線上評測系統-兩數相加範例

既然要線上解題,

看懂題目就是第一步,

此範例要求使用者以input輸入兩個數字,

並輸出兩數相加的值。


很簡單的題目,

但也是很基礎的觀念題,


就從最常見的錯誤開始解析:

Python跟C不同,

使用變數不需要事先宣告,

但變數的資料型態取決於第一次使用所賦予的值,

input()所取得的變數必然為字串,

以題目中提到的輸入範例1,

輸入值為1跟2,

此錯誤答案輸出的結果為 12,

與舉例的解答有出入,

故系統判別為錯誤答案(Wrong Answer)。


而Runtime Error,

則是因為題目沒看清楚阿,

範例明明直接取得變數,

不需要另外加上中文。


由於input取得的變數為字串(string),

故必須透過資料型態的轉換,

將取得的變數轉為整數(int)之後,

才能拿來做四則運算。


從這個簡單的題目能學到哪些東西?

1. print用法
2. input用法
3. 資料型態的轉換
4. 變數的加法運算


程式就是要多練習,

才會進步得快,

這就是今天的兩數相加範例







2019年9月7日 星期六

宜蘭龜山島風光

宜蘭龜山島,

是近來賞鯨的熱門景點,

原名為五獅嶼,

而龜山島的之名是因為形似浮龜,

島上已無居民,

登島需登記且人數有管制。

龜山島為火山島,

以龜山八景聞名,


分別為:

龜山朝日,神龜戴帽,

此兩景主要描述氣象景觀,

靈龜擺尾,龜島磺煙,龜岩巉壁,龜卵傳奇,眼鏡洞,海底溫泉等等,

其餘六景則是由火山與海浪侵蝕形成的特殊景觀,有興趣的人,

可前往宜蘭賞鯨龜山島旅客服務中心觀賞


除了龜山八景,

登島從不同角度也能觀賞龜山島的美景,

環島一週花費時間不多,

時間充裕的話,

記得要走一趟步道,

親身體驗。







有機會來到附近賞鯨的話,

記得要登記上島來看看屬於龜山島的奇景。

2019年9月6日 星期五

Magento2變更商店 Logo與網頁標題欄 Favicon


線上商店已經開張,

商品也上架完畢,

接著就是店面裝潢,

首先必須更換的就是商店招牌,

所以今天要來教大家:

Magento2變更商店 Logo與網頁標題欄 Favicon


要變更商店Logo首先要到左方工具列找到Content,

在Design中找到Configuration,


在Default Store View的Action欄位選擇edit進入編輯

找到Header 的Logo image,

點選Upload按鈕選擇Logo上傳,








至於favicon做法與Logo類似,

但是修改的地方在HTML Header中,

找到Favicon Icon並點Upload按鈕上傳,

儲存離開並前往左方工具列選擇System

在Cache Management中更新快取後,

回到首頁就能看到Logo已經變更。

2019年9月1日 星期日

產品上架Magento2商店範例教學


既然踏出了電商的第一步,

在網路開了店就是要賣東西的,

沒有產品的商店當然不行,

這就是今天的主題了:

產品上架Magento2商店範例教學

首先到左方工具列選取Catalog,

找到Products並點擊,



在右上角Add Product按鈕點向下箭頭,

可看到關於產品的各項功能,

本次範例選擇Simple Product。


將產品的基本資料填上去,

就完成產品新增了。

產品最好要有個分類,

方便顧客依照需求找到所需的產品,

可在New Category按鈕上點一下,

設定好分類名稱以及上層父分類即可。
產品新增完畢後,

接著到左方工具列找到Content,

點選Pages


可看到目前預設有這些頁面,


找到Home page,

並在同一列的Action裡選擇Edit。


接著就能在所見即所得的編輯器中,

設計想看到的首頁。


當然也能夠透過Add widget方式將已經寫好的功能模組加進來。

本範例使用Catalog Products List,

功能為列出所有產品,

可以在Number of Products to Display中,

設定要顯示多少產品。


再回到商店首頁,

就能夠看到剛才所新增的產品了。
 點進去就能看到產品詳細資料,

再將想賣的產品一一上架即可,

不過這樣的網站是不受歡迎的,

沒有中文介面始終不夠親民,

這就是另一個主題了,

請待下回分解。