Skip to content
JackKuo edited this page Oct 3, 2019 · 2 revisions

該專案願景是能夠讓所有的學生社團都能夠共同使用,以資訊化的系統方便大家管理成員。

選擇 Python

朋友說想練練 Vue.js,剛好 Laravel 原生支援這個前端框架,都已經建好 Laravel 的資料庫,但考慮到會使用到爬蟲還要跟 Python 做結合,因此打掉乾脆換用 Python 重寫。

Python 好處是語法容易且很好上手,是越來越熱門的語言,許多非本科的學生也都開始在學習,因為這專案本來就旨在提供給各個社團使用,因此選擇比較好上手的語言也不是壞事,若有客製化需求才方便自行修改。

設定檔

採用 django-environ 來達成 .env 檔控制效果,要是不這麼做所有設定都得到 settings.py 中操作,如此可避免不小心將自己的設定檔 push 出去,在 Server 端每次要 pull 也就不用再次 checkout 復原所有設定。

安裝

#建立虛擬環境
python3 -m venv venv

#啓用虛擬環境
source venv/bin/activate

#安裝必要套件
pip install -r requirements.txt

#建立設定檔, 開發模式僅須 DEBUG=on
cp .env-example .env

#建立資料表
python3 manage.py migrate

#啓動網頁伺服器
python3 manage.py runserver

#創建 SuperUser
python3 manage.py createsuperuser

資料庫

資料庫老師說過,專案從資料庫設計開始,當資料庫建立好整個專案流程也就規劃好了。那我們就開始看看資料庫有些什麼吧~

Member

這張表為最重要的表,裡面記載著所有人員的基本資料,包含學號(工號)、系級(職稱)等等。

原本規劃電話、信箱等欄位應該各自獨立成一張表單,因為一個人可以有多組電話、信箱,技術上面不是問題可是我最後捨棄了,因為真的沒必要記錄那麼多,只需要把最常用的記下來就好,大多數人用不到第二組,如此也方便管理與程式撰寫。

要注意的是這張表跟能夠登入的管理員表是不同的,這張是我們自己設計的。

GP

此張表是 Group 的縮寫,這系統可以同時提供給多個社團使用,目前欄位只有社團名稱一欄,還沒想到什麼其他的可以加入。

GPM

用來表示 Member 與 GP 的「多對多」關係。

指令操作

#自動更新成員資料
python manage.py UpdateMember 104 105 106 107

#匯入資料
python manage.py import <filename>

開始寫程式

好的 IDE 是寫好程式的開始,學生可以免費使用 PyCharm這套目前公認最好用的 Python IDE,更準確來說,JetBrains 的產品學生都能夠免費使用,只要去註冊學生帳號即可!

透過 IDE 運行

如果你覺得要開 PyCharm 又要開 Terminal 去運行太麻煩,官方文件"Launching Django server" 有提到如何直接跑。

命名規則

基本上盡量遵照 PEP8 的風格去撰寫,當然為了效率考量你仍可以按照自己的方式,善心人士會幫你修正。

Commit & Push

若要開發新功能請建立新 branch,並且在完成後 merge 到 dev 中,確定可以穩定執行後再將 dev merge 到 master 中。以確保 master branch 的乾淨與穩定。

-- BlueT 2018

Shell

因為在 requirements.txt 中有安裝了 ipython,所以預設會使用 ipython 這套比較進階的直譯器來編輯,其中有許多方便的功能,其實常聽到的 Jupyter 就是建構在 ipython 上面。

$ python manage.py shell

In [1]: from backend.models import Member, GP, GPM

In [2]: Member.objects.get(SID='104321031)

In [5]: Member.objects.filter(GRADE='學3')