[Python]專案實體化之路:Django官方指南-001
在新手學習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
# 確認虛擬環境中套件版本
pip list# 或是採用 --version 進行版本確認,套件名可以任意替換
python -m django --version
二、開啟專案
# 建立新專案,專案名稱為 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
建立新的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 viewsurlpatterns = [
path('', views.index, name='index'),
]# 更新CV/urls.py
from django.contrib import admin
from django.urls import include, pathurlpatterns = [
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中可以查看。
setting.py也可以查看使用的時區、語言代碼。
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。至此
進入Django Shell
python manage.py shell
基於已經建立好的Models,我們可以透過Shell操作資料庫的新增(Create)、刪除(Delete)、修改(Update)、查看(Read)等基礎功能。