今天開始要正式開發網站,這次我要挑戰的是建置一個小說連載追蹤系統,其相關說明如下:
背景:因為我習慣等小說完結後才一次閱讀,對於感興趣但尚未完結的作品,需要定期主動去確認目前連載進度,故希望透過系統可以將此流程自動化。
需求:
建立網站,提供追蹤功能,由使用者輸入小說網址,如為支援網站則將此書放入追蹤清單。
系統定期自動使用爬蟲技術,取得以下資訊:
追蹤清單頁面根據當前使用者顯示追蹤項目的以下資訊:
具有登入功能
接下來,我將根據MDN Web Docs上面的教程來建立網站。
因前日建置的虛擬環境路徑不太符合我個人使用習慣,且前日的情境是使用「命令提示字元,為了更接近日常開發,故這次改為從VSCode上運行虛擬環境。
virtualenv my_django_project
環境建立完成後,VSCode會偵測到有新的虛擬環境,提示視窗選擇「是」。
關閉目前的終端機(終端機右上方的垃圾桶圖式)。
開啟命令選擇區 (ctrl + shift + p),選擇「Python: 選擇直譯器」,選擇剛剛建立的虛擬環境。
這時我遇到了一個錯誤訊息,當時忘了截圖,但大概是說「xxxx.ps1未經數位簽署,無法載入」。
解決方法:使用系統管理員身份打開Windows PowerShell,輸入以下指令設定PowerShell的執行原則:
set-executionpolicy remotesigned
python manage.py startapp track
應用程式建立好後,需在專案內進行註冊,這樣專案運行時才會將應用程式納入。注意註冊流程需在應用程式建立完成後才可進行,在建立應用程式階段如應用程式名稱已被註冊,會發生錯誤。
註冊方法:進入專案資料夾下的settings.py (上圖中的bookhelper/settings.py),於INSTALLED_APPS下新增「track.apps.TrackConfig」。
同樣在專案資料夾下的settings.py,可以設定資料庫,這邊設定的是MySQL。
中間試著運行測試網站,發現無法載入MySQL模組,需要安裝MySql client。
原本要使用pip安裝mysql-python,但似乎這個套件有版本支援性的問題,故改用mysqlclient。
pip install mysqlclient
專案資料夾下urls.py,新增以下設定:
urlpatterns += [
path('track/', include('track.urls')),
path('', RedirectView.as_view(url='/track/')),
]
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
作用:
因應用程式建立時底下沒有提供urls.py,故須由我們手動建立。
from django.urls import path
from . import views
urlpatterns = [
]