Web 開發學習筆記(1) — 搭建你的第一個 Web Server

FrozenMap發表於2019-02-16

簡介

Flask 是一個輕量級的 Web 框架, 如果要學習 Web 開發, Flask 非常適合作為我們學習的起點.

通過接下來的這一些列的部落格, 我們將學習如何利用 Flask 以及其他工具, 搭建一個簡單的網站.

We`ll build a web application from scratch. Have fun ?

開發環境

  • Ubuntu 16.04

    Python 3.5

    Flask 1.0.2

  • 命令如下

    sudo apt-get upgrade
    sudo apt-get install python3-setuptools
    sudo apt-get install python3-dev
    sudo apt-get install python3-pip
    sudo pip3 install pip --upgrade
    sudo pip3 install flask

第一個 server

  • 首先我們建立一個資料夾 webapp, 並在其中新建一個 server.py 檔案

    mkdir ~/webapp
    cd ~/webapp
    touch server.py
  • 接著, 我們開啟 server.py, 按照 Flask Quickstart 的示例, 開始編寫第一個 server

    from flask import Flask
    app = Flask(__name__)
    
    @app.route(`/`, methods=[`GET`])
    # methods 預設是 GET 因此可以簡寫為如下形式
    # @app.route(`/`)
    def hello():
        return `Hello`
    
    if __name__ == `__main__`:
        app.run(host=`0.0.0.0`, port=8080, debug=True)

    儲存檔案後, 在 Terminal 中輸入如下命令, 即可執行 webapp. 我們在瀏覽器中輸入 http://server_ip:8080 即可訪問網站, 頁面的內容就是 Hello

    python3 server.py

編寫 IndexHandler

  • 在上一節中, 我們使用了 @ decorator 來指定某個路由對應的處理函式, 這樣的寫法非常方便. 同時, 我們也可以編寫我們自己的 Handler 來處理各個不同的頁面(路徑). 比如, 對於首頁 Index, 即 http://server_ip:8080/, 我們可以編寫一個 class IndexHandler, 注意這是一個 MethodView 的子類, 也就是說這是一個 View Handler

    from flask import Flask
    from flask.views import MethodView
    app = Flask(__name__)
    
    class IndexHandler(MethodView):
        def __init__(self, name):
            print(name)
    
        def get(self):
            return `It is a GET request`
    
        def post(self):
            return `It is a POST request`
    
    if __name__ == `__main__`:
        app.add_url_rule(`/`, view_func=IndexHandler.as_view(`index`))
        app.run(port=8080, host=`0.0.0.0`, debug=True)

    根據 flask docs, 傳給 as_view() 的引數 name 會轉發給建構函式, 我們暫時用不到這個引數 name , 但是為了保持命名的一致性, 我們將其設定為 index

  • 儲存檔案後, 在 Terminal 中輸入如下命令, 即可執行 webapp. 我們在瀏覽器中輸入 http://server_ip:8080 即可訪問網站, 頁面的內容是 It is a GET request

    python3 server.py

參考資料

相關文章