iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
自我挑戰組

Python 30天自我挑戰系列 第 10

Day10 - 建立專案與應用註冊

今天開始要正式開發網站,這次我要挑戰的是建置一個小說連載追蹤系統,其相關說明如下:

背景:因為我習慣等小說完結後才一次閱讀,對於感興趣但尚未完結的作品,需要定期主動去確認目前連載進度,故希望透過系統可以將此流程自動化。

需求:

  • 建立網站,提供追蹤功能,由使用者輸入小說網址,如為支援網站則將此書放入追蹤清單。

  • 系統定期自動使用爬蟲技術,取得以下資訊:

    • 最新章節數
    • 狀態:連載中,完結
  • 追蹤清單頁面根據當前使用者顯示追蹤項目的以下資訊:

    • 書名
    • 作者
    • 章節數
    • 狀態:連載中,完結
  • 具有登入功能

接下來,我將根據MDN Web Docs上面的教程來建立網站。

在VSCode上運行虛擬環境

因前日建置的虛擬環境路徑不太符合我個人使用習慣,且前日的情境是使用「命令提示字元,為了更接近日常開發,故這次改為從VSCode上運行虛擬環境。

  1. 在目標資料夾下建立虛擬環境。(此動作和前日相同)
virtualenv my_django_project
  1. 環境建立完成後,VSCode會偵測到有新的虛擬環境,提示視窗選擇「是」。
    https://ithelp.ithome.com.tw/upload/images/20210922/201418863tLKrtDVsL.png

  2. 關閉目前的終端機(終端機右上方的垃圾桶圖式)。
    https://ithelp.ithome.com.tw/upload/images/20210922/20141886OYFeI5YkJF.png

  3. 開啟命令選擇區 (ctrl + shift + p),選擇「Python: 選擇直譯器」,選擇剛剛建立的虛擬環境。
    https://ithelp.ithome.com.tw/upload/images/20210922/20141886LIviIemLAn.png
    https://ithelp.ithome.com.tw/upload/images/20210922/20141886qabCrKQtuv.png

  4. 這時我遇到了一個錯誤訊息,當時忘了截圖,但大概是說「xxxx.ps1未經數位簽署,無法載入」。

解決方法:使用系統管理員身份打開Windows PowerShell,輸入以下指令設定PowerShell的執行原則:

set-executionpolicy remotesigned
  1. 順利載入後,可以在終端機視窗和VSCode最下方看到目前環境為my_django_project
    https://ithelp.ithome.com.tw/upload/images/20210922/201418867KiTvcJfNX.png

在專案資料夾建立應用程式

python manage.py startapp track

https://ithelp.ithome.com.tw/upload/images/20210922/20141886igYrAoqQ3V.png

註冊應用程式

應用程式建立好後,需在專案內進行註冊,這樣專案運行時才會將應用程式納入。注意註冊流程需在應用程式建立完成後才可進行,在建立應用程式階段如應用程式名稱已被註冊,會發生錯誤。

註冊方法:進入專案資料夾下的settings.py (上圖中的bookhelper/settings.py),於INSTALLED_APPS下新增「track.apps.TrackConfig」。
https://ithelp.ithome.com.tw/upload/images/20210922/20141886Lccrz6iYKs.png

設定資料庫

同樣在專案資料夾下的settings.py,可以設定資料庫,這邊設定的是MySQL。
https://ithelp.ithome.com.tw/upload/images/20210922/20141886YLHQj4K70a.png

安裝MySQL client

中間試著運行測試網站,發現無法載入MySQL模組,需要安裝MySql client。

原本要使用pip安裝mysql-python,但似乎這個套件有版本支援性的問題,故改用mysqlclient。

pip install mysqlclient

連結URL映射器

專案資料夾下urls.py,新增以下設定:

urlpatterns += [
    path('track/', include('track.urls')),
    path('', RedirectView.as_view(url='/track/')),
]

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

https://ithelp.ithome.com.tw/upload/images/20210922/20141886hXUFaMBKic.png

作用:

  1. 在將track/下的URL,改由應用程式track內的urls.py管理。
  2. 將根路徑導向 /track。
  3. 啟用靜態文件。

因應用程式建立時底下沒有提供urls.py,故須由我們手動建立。

from django.urls import path
from . import views


urlpatterns = [

]

上一篇
Day09 - 網站開發從Django開始
下一篇
Day11 - 模型與管理網站
系列文
Python 30天自我挑戰30

尚未有邦友留言

立即登入留言