Saturday, October 10, 2015

The Flask Mega-Tutorial, Part I Windows 環境設定

這邊整理了 The Flask Mega-Tutorial, Part I: Hello World! 在 Windows 上執行的指令。這整理的用意是原文中會各別提到在 Linux 跟 OS X 中的指令,對於不熟那些系統的人來說讀起來會有點困擾。

這篇並非對原文的直接翻譯,想要練習的人請務必閱讀原文。

在開始之前,請先安裝 Python ,這篇是專門為 Python 版本 3.4 以上說明。如果 3.4 以下的版本請另外安裝 pip 跟 virtualenv (就是請自己想辦法的意思)。

安裝 Python 時請記得將 Python 安裝的位置加到環境變數的路徑中,如安裝 3.5 時,要記得把 Add Python 3.5 to PATH 勾起來。
安裝Python時勾選Add Python to PATH

那就開始,打開「命令提示字元」,他在「附屬應用程式下面」。台灣微軟可以把命令提示字元改成比較有意義的名稱嗎?譬如指令行或終端機。他實在沒有在提示任何東西... 或字元。

首先要先有一個程式開發專屬的目錄夾,這目錄的目的在方便跟其他平常的檔案分開來(如那些無聊的 word 檔或小孩的照片),不然沒有其他任何意義。個人習慣叫做 projects ,不過要叫什麼名字都可以。可以從檔案總管新增這個目錄,或拿以下指令新增:
md projects
不要忘記用以下指令移到你的專屬目錄下:
cd projects
新增專案目錄
md microblog
執行中目錄移到專案目錄下
cd microblog
開始建置 Flask 環境。為什麼要建立 Flask 環境?因為建立出獨立的環境才不會影響系統中其它 Python 程式。如果還是不懂為什麼這麼做,沒關係,改天再去搞懂。真的,改天請真的去搞懂。
python -m venv flask
接下來要在安裝一堆將來會用到的程式庫,現在還不懂沒關係:
flask\Scripts\pip install flask
flask\Scripts\pip install flask-login
flask\Scripts\pip install flask-openid
flask\Scripts\pip install flask-mail
flask\Scripts\pip install flask-sqlalchemy
flask\Scripts\pip install sqlalchemy-migrate
flask\Scripts\pip install flask-whooshalchemy
flask\Scripts\pip install flask-wtf
flask\Scripts\pip install flask-babel
flask\Scripts\pip install guess_language
flask\Scripts\pip install flipflop
flask\Scripts\pip install coverage
整體架構環境快好了,再建立幾個目錄:
md app
md app\static
md app\templates
md tmp
app 目錄會放實際網站程式。

YES! 可以開始寫程式了,如果現在還沒有你最愛的文字編輯器,或心中想說文字編輯器是小三的話,可以安裝 notepad++ 來寫。注意程式中的縮排一定要用 tab ,如 views.py 中的 return "Hello, World!" 就要用 tab 縮排。

在這一次的練習總共有三個程式檔。

第一個程式檔

在剛剛建立的  app 目錄下編輯一個新的檔案: __init__.py ,所以這檔案路徑會是
app\__init__.py
程式內容不算空白行的話就下面這三行而以:
from flask import Flask

app = Flask(__name__)
from app import views
在 Python 中 __init__.py 檔案,只要是同一個目錄(同package)的任一程式檔(模組)被呼叫到,就會先執行 __init__.py 中的程式,不過只會執行一次。如果同 package 中有兩個程式檔分別被呼叫到,只有第一個檔被呼叫時會執行 __init__.py 。

第二個程式檔

一樣在 app 目錄下新增檔案 views.py ,檔案路徑是
app\views.py
程式內容如下,注意縮排要用 tab :
from app import app

@app.route('/')
@app.route('/index')
def index():
    return "Hello, World!"

第三個程式檔

這個檔案就直接在 microblog 目錄下了,叫做 run.py
#!flask/bin/python
from app import app
app.run(debug=True)

完成

第一個 Flask 網站程式寫好了。恩,就這樣而已。只要在把他跑起來就好了。說到要跑... 就是 run 了。run.py 其實不算網站程式的一部分,他只是叫我們的網站程式( app )啟動。請按照以下指令執行,刻意使用 flask\Scripts 中的 python 這樣才能把程式在剛剛建立起來的獨立環境中跑。
flask\Scripts\python run.py
最後享受程式的成果,把你最喜歡的網路瀏覽器打開,網址輸入
http://localhost:5000
或以下網址也會有一模一樣的結果:
http://localhost:5000/index

5 comments:

  1. __init__.py
    請問用底線有什麼特別的用意嗎?

    ReplyDelete
    Replies
    1. 只要在同一個目錄下的Python程式,他們都算同一個package,當一個package中第一次有任一程式檔被呼叫時,會自動執行 __init__.py 。從名字上可以看出來他是初始化他所屬 package 的程式。 雙底線開始與結尾的檔案、變數、函數名稱,在 Python 中大都有特殊意義。

      Delete
  2. 共3個程式檔
    為什麼前兩個要放在app
    最後一個要放在microblog

    ReplyDelete
    Replies
    1. 其實 app 下才是網站的實際程式, microblog 只是指這專案所有相關檔案都會放在裡面。 run.py 不在 app 中,因為他只是啟動 app 中的程式。

      Delete