本專案可當作Django專案的起始樣板,為了讓專案更為結構化且符合實務(區分測試及正式機等不同環境的設定及所需套件), 此專案採用Django專案範本產生器Cookiecutter Django及Two Scoops of Django 3.x一書所偏好的目錄結構, 而非Django project預設的目錄結構。 專案根目錄DjangoProjectStarter/包含以下子目錄及檔案:
-
config/目錄: 包含settings/目錄、URL設定檔及WSGI設定檔。 settings/目錄中又包含用以進行本地端開發 (local.py) 及正式上線(production.py)等不同狀況時的設定檔, 這兩個檔都繼承自基本設定檔base.py。
-
starter/目錄: 包含此專案中司職不同功能的apps及其所屬的templates和static files。
-
requirements/目錄: 包含用以進行本地端開發 (local.txt) 及正式上線(production.txt)等不同狀況時的Python套件需求, 這三個檔都繼承自基本套件需求檔base.txt。
-
README.md: 此專案GitHub repository的主說明文件。
-
.gitignore: 包含git commit時不需要版本控制而要忽略的檔案列表及規則。
-
dot_env_file_template: 環境變數.env檔模板,請依據你的開發環境修改、擴展檔案中的設定(資料庫帳密等等),並更名為.env ,為了安全性請務必更改模板中的設定值,且不要將本地端/正式機中的.env檔上傳到GitHub,請參考Django-environ的文件。
- 複製dot_env_file_template檔為.env檔並調整其中的設定值(DJANGO_SECRET_KEY、PostgreSQL帳密等等)
cp dot_env_file_template .env
- 建立Docker image
docker-compose -f local.yaml build
- 啟用服務
docker-compose -f local.yaml up -d
- 創建超級管理員帳號
docker-compose -f local.yaml run --rm django python manage.py createsuperuser
- 創建新的APP
docker-compose -f local.yaml exec django python manage.py startapp appname
docker-compose -f local.yaml exec django mv appname starter
- 建立model
docker-compose -f local.yaml exec django python manage.py makemigrations
docker-compose -f local.yaml exec django python manage.py migrate
- 查看logs
docker-compose -f local.yaml logs -f
- 複製dot_env_file_template檔為.env檔並調整其中的設定值(DJANGO_SECRET_KEY、PostgreSQL帳密、DJANGO_ALLOWED_HOSTS等等)
cp dot_env_file_template .env
-
調整設定docker/nginx.conf中的設定
-
建立Docker image
docker-compose -f production.yaml build
- 啟用服務
docker-compose -f production.yaml up -d
- 創建超級管理員帳號
docker-compose -f production.yaml run --rm django python manage.py createsuperuser
- 查看logs
docker-compose -f production.yaml logs -f
- 下載此專案,並將DjangoProjectStarter/及starter/目錄更名為符合你的專案的名稱,並修改config/settings/ /base.py檔案中的APPS_DIR變數的值(將starter更名)。
git clone https://github.com/YihaoSu/DjangoProjectStarter.git
-
依據你的專案所需,安裝並建立PostgreSQL或MySQL資料庫
-
依據你的開發環境(資料庫的帳密及資料庫名、DJANGO_SECRET_KEY等等),修改dot_env_file_template檔中的設定值,並將檔名改為.env
-
利用virtualenv或Conda建立獨立的開發環境 (Python 版本: 依你的專案所需)
-
啟動進入該開發環境後,輸入以下指令以便安裝專案所需的Python套件 (Django 版本: requirements檔是3.2 LTS, 依你的專案所需做變更)
cd 專案名稱
pip install -r requirements/local.txt
-
在更名後的starter/目錄中,開發你專案所需的Django apps ,並擴充config/目錄中的設定檔及requirements/目錄中的套件需求檔
-
執行完以下指令後,在瀏覽器輸入 http://127.0.0.1:8000 或是 http://localhost:8000 即可在本地端瀏覽此Django專案所建立的網頁
# 執行manage.py時會預設載入 config/settings/local.py 本地端設定檔
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser # 有使用Django admin才需要
python manage.py collectstatic # 有使用[static files](https://docs.djangoproject.com/en/3.2/howto/static-files/)才需要,會在專案根目錄中建立名為staticfiles的資料夾,並將各APP所屬static files彙集到此資料夾中
python manage.py runserver