在 Windows 上安裝 Django 小記

參考文章:

安裝 Python

安裝虛擬環境

pip install virtualenvwrapper-win

網路上的參考路徑結構示意圖

Project layout 1

Windows10下

創建虛擬環境(mkvirtualenv)

PS D:\env_8> mkvirtualenv my_django_env
PS D:\env_8>python -m venv myvenv

啟動虛擬環境

env_804\Scripts\activate

使用虛擬環境

  • deactivate — 退出當前的Python虛擬環境
  • workon — 列出可用的虛擬環境
  • workon name_of_environment — 激活指定的Python虛擬環境
  • rmvirtualenv name_of_environment — 刪除指定的環境

安裝DJango

pip install django

建立專案

django-admin startproject 專案名稱

執行專案

cd 專案名稱

py manage.py runserver

app

在env\project\下建立apps目錄,將app建立在apps中

建立 Django application(app)

  1. command mode進入apps路徑,「cd proejct名稱\apps」
  2. 執行指令 py ..\manage.py startapp app名稱
  3. app名稱下的apps.py
    name的內容要從「app名稱」改為「apps.app名稱」
  4. 修改project資料夾下的settings.py中,找到「INSTALLED_APPS」區段,加入上面的「app名稱」到設定檔中
    如果是類似步驟3,有模組名稱的,要改為「apps.app名稱」

app的建立

  1. 新增app下的views.py,在裡面建立回應的function
  2. 在project路徑下urls.py裏新增import與urlpatterns
    • import:from apps.app1.views import hello_world
    • urlpatterns:path(‘hello/$’, hello_world),

Template

  1. 在project資料夾下,新增一個Templates目錄
  2. 修改project下settings.py中
    • import os
    • TEMPLATES屬性的值,新增一個
      [os.path.join(BASE_DIR, ‘templates’).replace(‘\\’, ‘/’)]
  3. 新增一個hello_world.html的檔案

Models

app下的db設定

在app下的models.py修改需要的db設定與table格式

  • app下的admin.py要改
    • import
    • register
  • models.py裏要修改table的定義
  • views.py
    • 如果有用到table,要import

models.filed|Model field reference | Django documentation | Django (djangoproject.com)

  • blank=True,這取決於該欄位在表單中是否為必填項
  • null=True,該欄位允許null值(空值以null表示)

同步資料庫

  1. 在project路徑下,輸入「python manage.py makemigrations
    會在app下建立「migrations」的資料夾,讓 migrate 指令執行時,可以照著這份紀錄更新資料庫。
    或是輸入「python manage.py makemigrations 名稱」以指定app
  2. 事先知道未來migrate會做的動作是什麼?
    「python manage.py sqlmigrate app名稱 0001」
  3. 輸入「python manage.py migrate
    將models.py中的欄位設定寫入資料庫
    migrate 指令會根據 INSTALLED_APPS 的設定,按照 app 順序建立或更新資料表,將你在 models.py 裡的更新跟資料庫同步。
    多資料庫時,輸入「python manage.py migrate –database=’users’」

其他

Admin

建立superuser

python manage.py createsuperuser

註冊Model class

  • 在admin.py中,import 並註冊
    from .models import Post
    admin.site.register(Post)

連接mariadb

# mysql
sudo apt-get install mysqldb-server libmysqlclient-dev
# mariadb
sudo apt-get install mariadb-server libmariadbclient-dev

sudo apt-get install python-pip python-dev
pip install mysqlclient

urls.py的urlpattern

URL dispatcher | Django documentation | Django (djangoproject.com)