[Python+Django]初心者筆記2(實例網站以及應用程式示範,建立網站,建立應用程式,註冊應用程式,設定url mapping,設定網站的預設應用程式,database migration)

[Python+Django]初心者筆記2(實例網站以及應用程式示範,建立網站,建立應用程式,註冊應用程式,設定url mapping,設定網站的預設應用程式,database migration)

Django framework架構之下,當你要建立一個網站,首先要利用Django的django-admin指令在commandline底下(以下簡稱cmd)建立locallibrary站台:
下列指令會自動建立一個locallibrary網站以及相關的.py程式碼

django-admin startproject locallibrary
cd locallibrary


接著下面指令將會在此網站底下建立catalog應用程式,即網站下有多個應用程式的概念:

py -3 manage.py startapp catalog



Django framework架構出來的網站應用程式需與網站註冊
因此需把catalog這個應用程式註冊到locallibrary這個網站,如果跟微軟體系的比較的話,大概是類似IIS網站下面加入應用程式這樣的功用~
在檔案locallibrary/locallibrary/settings.py裡面的INSTALLED_APPS區塊,加入這段文字:
'catalog.apps.CatalogConfig',
參考下圖


然後要來設定使用的資料庫,一樣是在settings.py裡面設定,請找到DATABASE區塊,這邊的範例使用的是SQLLite,所以目前不用改設定,以後如果改用SQLServer或是MySQL的時候,再來這邊改連線字串即可:

接著改時區的設定,一樣是在settings.py裡面設定,先搜尋關鍵字"",改為如下:
TIME_ZONE = 'Asia/Taipei'

通常url mapping的設定不會在locallibrary網站層次的urls.py做設定,而是會到較低階層的catalog應用程式層次做。
將下列程式碼加入locallibrary\locallibrary\urls.py的最末端之後,就代表著:
catalog應用程式的url mapping的細節,將由他自己的locallibrary\catalog\urls.py來做設定

# Use include() to add paths from the catalog application 
from django.conf.urls import include
from django.urls import path

urlpatterns += [
    path('catalog/', include('catalog.urls')),
]


而目前locallibrary網站下僅有一個應用程式catalog,因此要設定一進入網站,就進入catalog應用程式。需要在locallibrary\locallibrary\urls.py的最後面加入下面程式碼:

#Add URL maps to redirect the base URL to our application
from django.views.generic import RedirectView
urlpatterns += [
    path('', RedirectView.as_view(url='/catalog/', permanent=True)),
]


接著還是一樣在locallibrary\locallibrary\urls.py的最後面加入以下設定,讓網站在develop階段可以使用靜態的檔案,如:.js檔案、css檔案、……(這段不是很懂他在講什麼,先加上去再說吧!)

# Use static() to add url mapping to serve static files during development (only)
from django.conf import settings
from django.conf.urls.static import static


urlpatterns+= static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)


最後當然還是要在catalog資料夾下面加入一個檔案urls.py來設定該應用程式url mapping的細節,檔案加入成功之後,加入下列空設定的程式碼:

from django.urls import path
from . import views


urlpatterns = [

]


接著要進行的是相当重要的database migration,Django希望資料庫相關的程式碼在做了任何重大變更之後,都在cmd執行一次此migration指令,然後才去啟動web server,指令如下:
就之前.Net的Code first的經驗來猜測,執行之後大概是會去執行SQL指令,建立資料表、新增資料表欄位、刪除資料表欄位……之類的指令吧

python manage.py makemigrations
python manage.py migrate

下一篇文章將會開始介紹如何定義資料庫相關的物件喔……這篇先這樣


參考資料:
List of tz database time zones
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
Django Tutorial Part 2: Creating a skeleton website
https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/skeleton_website
Django Tutorial Part 2: 创建网站的地基
https://developer.mozilla.org/zh-CN/docs/Learn/Server-side/Django/skeleton_website