也說Django架站攻略

教你架站的一堂課

Posted by silau on September 14, 2019

這個網站是用Django架設的,關於 Django你首先要知道的就是他的讀音 Django (/ˈdʒæŋɡoʊ/ JANG-goh),大約就是Jang-Go(D不發音)。

在經歷了兩年的後端開發生涯之後,目前建站所用的方式跟以前已經大大不同,任何對Python有一定認識的朋友,只要知道兩個關鍵字都可以快速架構一個Django網站。

第一個關鍵字:Cookiecutter

在初期接觸Django的過程中,偶然會見到網友提及到Cookiecutter,但對於這個名詞只感到不明所以。

Cookiecutter是這樣介紹自己的:A command-line utility that creates projects from cookiecutters (project templates), e.g. creating a Python package project from a Python package project template.

其實這是一個幫Python相關的專案快速建構項目樣板的小幫手,就好像整曲奇的時候可以快速倒模一樣。Cookiecutter可以幫你設置好file structure,將需要用到的工具放在一起,並預先寫好config file。

第二個關鍵字:Docker

以往部署一個Web應用框架,總要處理很多系統環境的問題,而在本機開發環境跟生產環境之間遇到的情況也可能各有不同。就以Python自身為例,一般會用到Virtualenv來設定虛擬環境以方便快速切換環境,以及避免環境衝突。

Docker就可以很好地解決環境相關的問題,透過Docker的容器化技術,環境可以直接在Docker file跟yml file內設定好,有時也會再加上env file的配合,這樣就可以確保無論在開發環境還是在生產環境,設置都是一樣的。

以下是這個網站建站時用到的Stack:

對於想進行快速嘗試的朋友,上面的Cookiecutter Template 是一個很好的開始。

由於Cookiecutter預先做了大量工作,將很多實際操作都進行了抽象化處理,最新版的Cookiecutter連Gunicorn的名字也隱沒了,而reverse proxy的工具也已經由Nginx換成Caddy,再換成目前的Traefik。

就如我的Partner小明經常提到的,最好的學習還是要先學習大綱,再由淺入深一步一步來,那才學得穩固,遇到問題時才知道要去那裡找答案。所以想從零學習的朋友,我向你推介這本書:「python 新手使用 django 架站的 16 堂課」。這本書不但很仔細地介紹了Django的MTV框架,還將整個Web framework概念都解說了一篇,實用內容也有Git的介紹以及一些實作例子。

另外你可以參考當年的網上經典教程嘗試落手落腳自己架一次站:

How To Set Up Django with Postgres, Nginx, and Gunicorn on Ubuntu 16.04