Tapei Day Trip

專案概述 前言 台北一日遊為參加WeHelp訓練營的guided project,也是自己第一個網頁作品。雖然是指導作品,但彭彭老師只會在每周的說明需要的功能,不管是前端的畫面呈現或是後端的API開發,老師都沒有撰寫任何程式碼供我們參考,如下圖。 架構簡介 由於是第一次做網頁開發,相較於Django有許多middleware和定義好的資料庫模型,Flask是一個更輕量級的Web框架,且也提供路由和模板引擎等基本的網站功能,不會因過多額外的概念和功能而感到煩惱。再者電網網站有會儲存許多結構化資訊,如景點、用戶、訂單資訊等等,為確保資料的完整性選擇關聯式資料庫,並選擇最常見的開源資料庫MySQL。 專案主要功能 會員系統,可上傳大頭貼、修改密碼、手機等資訊 透過Infinite scroll可以一頁式的形式瀏覽所有景點 使用搜尋功能瀏覽景點 串接第三方金流平台TapPay進行付款 預定行程頁面可看到已預定但尚未付款的景點,類似購物車系統 查看歷史購買清單 技術架構 專案使用前後端分離的架構設計,除了python的flask框架、MySQL外,部屬的雲端服務為Azure,使用blueprint做模組管理,Nginx做反向代理,並用Uvicorn啟動ASGI伺服器。 Blueprint & MethodView Blueprint Blueprint是Flask中的一個概念,可將應用程式分解成多個模組。每個模組可以有自己的路由、模板和靜態文件,讓開發者更容易維護和擴展。 # attraction.py from flask import Flask, Blueprint, request attractionApi = Blueprint('attraction', __name__) #app.py from routes.attraction import attractionApi app.register_blueprint(attractionApi, url_prefix='/api') 在其中一個路由,attraction.py import Blueprint後,接著建立了一個名為attractionApi的Blueprint對象。 接著在app.py將名為attractionApi的Blueprint註冊到Flask應用程式app中,url_prefix=’/api’參數指定了這個Blueprint的所有路由都將以/api為前綴。這代表如果attractionApi Blueprint中定義了一個路由/example,那麼在應用程式中訪問這個路由的URL將會是/api/example。 MethodView #attraction.py from flask import Flask, Blueprint, request from flask.views import MethodView attractionApi = Blueprint('attraction', __name__) class attractionCategory(MethodView): def get(self): categories = [] try: mydb = taipeiPool....

March 3, 2024 · 2 min