![]() |
| 不懂為什麼Flask的圖示是辣椒 |
在cs50x第8週課程需要學生挑選專業領域,我選了網站開發,這部分課程在後端部分,介紹了以Python寫成的Flask框架。然而看完課程提供的約1小時Flask教學影片,我還是覺得作業很難。而且教學都是英文說明,英文程度再好,若不到母語等級,還是覺得有點隔閡。因此我決定再來找一些補充教材。
順道提一下,自學程式最大的困難點是,網路上看似免費的教學太多太多了,可是大部分都是片面的介紹,你臨時要查相關知識很方便,但是如果是要系統性的學習,就很不建議。因此新手自學經常會浪費很多時間查找資料,可能挑了一樣開始學習,過沒多久又發現不合適,來來回回地就損失寶貴的學習時間,也會磨損學習慾望。因此如果有找到不錯的系統性的介紹課程,即便是要付錢,也不用猶豫了。
Flask的相關中文教學影片較少,目前在YouTube上找到的有(下列數字可能會變動):
- 【千锋Python】最经典的Flask框架入门教程(免費): 聽起來是大陸人的教學,看起來比較完整,不過聽他的教學方式,我實在看不下去。而且這些影片應該是實際上課時的側錄影片,應該是要找專門為了網路課程而製作的影片比較好。
- 彭彭的Python Flask 網站開發(付費): 台灣老師,當然最推薦囉,所有用字遣詞比較不會有隔閡。缺點是語速很慢,我得開1.5甚至1.75倍速。目前影片僅3部,其餘還在製作中,而且要看得加入會員,每月100元。所以建議要看的人,可以等他至少做了10幾部之後,再訂閱,一口氣看完。
書籍的部分,我是買歐萊禮出版社,作者為Miguel Grinberg的《Flask 網頁開發第二版》,一般來說這種英文母語人士寫的書籍,有能力的話還是買一本原版來對照閱讀比較好。但是在博客來中文版只賣522元,原版在Amazon大約要800多元,大家自己斟酌囉。
由於Flask的免費中文教學影片少,如果真的不想花錢,不然也可以看Python Flask Tutorial: Full-Featured Web App,雖然是英文版,但是講得挺清楚的。全部的影片看一遍,應該就有辦法來寫作業了。
Flask基本介紹
要用Flask在你的電腦部署網站,非常簡單,首先在你的電腦設定一個指定放網站的資料夾,例如叫 project,然後在裡頭寫一個python檔案,通常會命名為 application.py,這裡的檔案名稱不會特別要求。application.py裡的程式碼可以看下列。
接著在終端機上輸入 python application.py,就是第一個網站了。
實際上我們當然不會在 return後面直接輸入字串,通常會接指定的html檔。例如 index.html。但是我們無法直接return,必須要有一個程式能夠在瀏覽器上呈現網頁。我們需要 render_template函式。
要使用 render_template函式,必須先在 project資料夾內放入 templates資料夾,這個資料夾名稱是固定的,不能修改,templates資料夾裡面可以放你想要的網頁,如 index.html。接著在application.py裡 import render_template函式,程式碼如下:
Jinja2樣版引擎
Flask預設使用Jinja2樣版引擎,要另外解釋Jinja2太麻煩了,只要記得是一種特殊的語法就好了。我們可以在上面的程式裡,修改成:
接著在剛剛的index.html裡面,放入語法如下:
在終端機上輸入 python applicaion.py,看看有什麼變化!
模版繼承
程式設計中,必須注意盡可能不要寫重複的語法。因此如果有一個html樣式,可以套用在不同的頁面上(追求風格一致),最好是寫成模版。而不是複製貼上。
使用Flask加入模版,可在 templates資料夾內,寫一個 layout.html(名字隨意),假設要加入bootstrap,可寫成下列語法:
接著在你本來的 index.html,改成這樣:
下一次會來學如何使用Flask結合SQL資料庫,讓使用者能夠註冊、登入、登出。
Happy Coding!!!
