首先我們要介紹的是網頁應用程式(Web Application),這是一種很常見的應用程式,例如 Youtube 以及維機百科等等,使用者會透過瀏覽器來訪問與操作。
在眾多 Python 套件中,Django 是一個廣受歡迎、且功能完整的 Web Application 框架,旨在使網頁開發變得簡單、快速和可擴展,Django 提供許多開發網站所需要的模組,例如使用者登入、管理者介面等等,使得網頁開發變得簡單、快速和可擴展。但也因為 Django 預設提供了許多功能,因此學習的初期階段有較高的學習曲線,以下內容將介紹 Django 中一些較為重要的檔案。
本次範例使用的是 Django 4.2.15 版本
poetry add Django==4.2.15
首先可以使用 Django 提供的工具自動生成專案所需的目錄結構
poetry run django-admin startproject mysite
生成的目錄結構如下
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
這些檔案中有兩個很重要的檔案
manage.py
是提供指令的檔案,開發者可以執行各種指令來開發與維護專案,例如啟動或測試 Web Application 等settings.py
是專案的設定檔,可以設定連線、語系以及時區等等。此外,資料夾中還包含 wsgi.py
和 asgi.py
,這部分將在下一篇文章中詳細介紹,本篇先暫時略過。一個 Django 專案由多個應用(app)組成。例如,在一個購物網站中,可以劃分為商品(product app)和金流(payment app)等應用。下面將以 product app 作為範例進行介紹。
首先進入 manage.py
所在的目錄下,接著執行下列指令來創造 product app
poetry run python manage.py startapp products
執行後會生成 products
目錄,其中包含兩個重要的檔案。
在購物網站中,我們需要儲存許多商品的名稱和數量等資訊。這些資料的儲存格式是通過這個檔案來定義的。例如,以下定義了 Product Model
,其中 name
欄位用於儲存商品名稱,且名稱的長度最長為 200 個字元。
class Product(models.Model):
name = models.CharField(max_length=200)
由於商品資訊需要長期保存,因此通常會儲存在硬碟中。最簡單的儲存方式是將商品資訊直接列在文字檔中。然而,當我們需要從文字檔中查找特定的商品資訊時,必須從檔案的第一行開始逐行掃描,才能找到所需的內容。這種檢索方式會隨著資料量的增長而變得低效,因此我們通常會採用更高效的資料儲存與檢索方式。其中最常見的是使用資料庫(Database)。不過,由於這不是本系列文章的重點,我們不會深入討論。只需了解資料會儲存在硬碟中的資料庫即可。當資料從硬碟中的資料庫取出後,會變成 Python 執行環境中的 Product Model
實例物件。假設物件的變數名稱為 product_a
,則可以透過 product_a.name
來獲取該商品的名稱。
views 需要根據瀏覽器的請求進行相應的回應。以下用範例說明:首先,從資料庫中取得第一個商品的資訊,然後將該商品的名稱回傳給瀏覽器。
def index(request):
product = Product.objects.first()
return HttpResponse(product.name)
最後一個重要元件是 template。在上述 views.py
的範例中,回傳的是純文字,而不是我們常見的 HTML。Django 提供了自己的模板語法,可以用來回傳 HTML。我們需要在 products
目錄中手動建立 templates
目錄,並在該目錄中新增相應的模板範例。例如,以下範例中會使用 <h1>
標籤來顯示商品名稱。
<h1>{{ product.name }}</h1>
雖然以上範例用來介紹 Django,但目前該範例尚未成功啟動,還需要進一步進行資料庫建置和 URL 設定等配置。後續部分可以參考官方教學文件。本篇文章只專注於介紹 Django 的核心元件