[Python]專案實體化之路:Django官方指南-001

ChunJen Wang
jimmy-wang
Published in
7 min readMay 11, 2021

在新手學習Python過程,我們都曾用colab或其他IDE環境撰寫code,但成果卻很難完整呈現,往往只能用jupyter或直接開IDE來Demo。

本篇源自Django官方指南,目錄可以參考:
https://docs.djangoproject.com/en/3.2/intro/

學習目標

基於希望完整呈現專案,不免要面對前端設計、後端資料庫、伺服器架設。這篇內容希望可以透過Django出發,一步一步練習如何將透過python編寫成果,落地到網頁。

本篇大綱

一、環境建置
二、開啟專案
三、寫一個app
四、建立資料庫 Models

一、環境建置

需事先安裝Python主程式,開啟電腦命令提示字元(搜尋cmd),透過下列指令建立虛擬環境。並安裝django套件,方式如同一般環境中安裝套件(使用pip install)。

# 建立虛擬環境,命名為py_enve
py -m venv py_enve
# 安裝套件
pip install django
安裝環境後可以至安裝路徑確認是否建立成功。
# 啟用虛擬環境
py_enve\Scripts\activate.bat
啟用後cmd前面會加註虛擬環境名稱。
# 確認虛擬環境中套件版本
pip list
# 或是採用 --version 進行版本確認,套件名可以任意替換
python -m django --version
確認虛擬環境中lib有哪些套件、版本號。

二、開啟專案

# 建立新專案,專案名稱為 CV
django-admin startproject CV
# cd至新建專案dir內,輸入以下指令確認專案內已建立的巢狀結構
tree /F ..
專案初始化樹狀結構。
  • settings.py 核心運作寫在這。
  • urls.py 橋梁角色,根據網址對應到views。
  • wsgi.py 扮演web server與web application溝通的介面。
# 測試專案是否可以運行
python manage.py runserver

若運行成功,開啟連結 http://127.0.0.1:8000/,會顯示以下畫面。

成功運行畫面截圖。

三、寫一個app

這邊直接參考官方文件的操作步驟,以建立一個polls為例。
https://docs.djangoproject.com/en/3.2/intro/tutorial01/

# 建立app,命名為polls
python manage.py startapp polls
app初始化樹狀結構。

建立新的urls.py。[位在polls app底下]

  • admin.py 設定資料庫呈現模式,與models溝通。
  • models.py 建構資料庫型態的地方。Schema在這裡建立。
  • tests.py 如其名。
  • views.py 與urls 呼應,將使用者需要的功能傳達到前端。因此功能就可以是各式各樣的內容,可以回傳json、文字、圖片,或是完整的服務或網頁內容。
  • urls.py 橋梁角色,根據url映射到view上。
  • migrations 收納models創建的資料庫型態。
# 更新pyolls/urls.pyfrom django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
# 更新CV/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('polls.urls')),
]

1. include() 用法參考官方文件。
2. urlpatterns資料型態為List,裡面的element是path object。
path(route, view, name) #route是路徑, name可省略

正常運行結果應如下圖:

在這裡如果有發現路徑錯誤,可以參考這裡。

Django預設的資料庫採用SQLite。於setting中可以查看。

查看settings.py中使用的DB engine。

setting.py也可以查看使用的時區、語言代碼。

查看settings中時區。
python manage.py migrate

migrate 功能為尋找對應的models,並根據資料庫來轉換資料格式。

四、建立資料庫 Models

於models.py中建立類別。

from django.db import models

class Question(models.Model):
question_text = models.CharField(max_length=200) #問題內容
pub_date = models.DateTimeField('date published') #時間點

class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)

於settings.py中新增polls App

INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

於虛擬環境執行migration。

python manage.py makemigrations polls

通過運行makemigrations告訴Django對models進行了修改,希望將更改存儲為migration。至此

顯示建立model Question 與 Choice。

進入Django Shell

python manage.py shell

基於已經建立好的Models,我們可以透過Shell操作資料庫的新增(Create)、刪除(Delete)、修改(Update)、查看(Read)等基礎功能。

--

--

ChunJen Wang
jimmy-wang

嗨,歡迎你的到來,我目前在銀行擔任DS。過去曾做過銀行大型專案BA,也曾在轉職科技業DE中踢了鐵板,相信每一個人都有自己要走的路,而努力的過程,可以讓我們離心中理想更接近,如果我的文章能帶給你一些啟發與幫助,別忘了幫我在文章底下按下拍手~^^