iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0

簡介

首先我們要介紹的是網頁應用程式(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

這些檔案中有兩個很重要的檔案

  1. manage.py 是提供指令的檔案,開發者可以執行各種指令來開發與維護專案,例如啟動或測試 Web Application 等
  2. settings.py 是專案的設定檔,可以設定連線、語系以及時區等等。此外,資料夾中還包含 wsgi.pyasgi.py,這部分將在下一篇文章中詳細介紹,本篇先暫時略過。

一個 Django 專案由多個應用(app)組成。例如,在一個購物網站中,可以劃分為商品(product app)和金流(payment app)等應用。下面將以 product app 作為範例進行介紹。

首先進入 manage.py 所在的目錄下,接著執行下列指令來創造 product app

poetry run python manage.py startapp products

執行後會生成 products 目錄,其中包含兩個重要的檔案。

1. models.py

在購物網站中,我們需要儲存許多商品的名稱和數量等資訊。這些資料的儲存格式是通過這個檔案來定義的。例如,以下定義了 Product Model,其中 name 欄位用於儲存商品名稱,且名稱的長度最長為 200 個字元。

class Product(models.Model):
    name = models.CharField(max_length=200)

由於商品資訊需要長期保存,因此通常會儲存在硬碟中。最簡單的儲存方式是將商品資訊直接列在文字檔中。然而,當我們需要從文字檔中查找特定的商品資訊時,必須從檔案的第一行開始逐行掃描,才能找到所需的內容。這種檢索方式會隨著資料量的增長而變得低效,因此我們通常會採用更高效的資料儲存與檢索方式。其中最常見的是使用資料庫(Database)。不過,由於這不是本系列文章的重點,我們不會深入討論。只需了解資料會儲存在硬碟中的資料庫即可。當資料從硬碟中的資料庫取出後,會變成 Python 執行環境中的 Product Model 實例物件。假設物件的變數名稱為 product_a,則可以透過 product_a.name 來獲取該商品的名稱。

2. views.py

views 需要根據瀏覽器的請求進行相應的回應。以下用範例說明:首先,從資料庫中取得第一個商品的資訊,然後將該商品的名稱回傳給瀏覽器。

def index(request):
    product = Product.objects.first()
    return HttpResponse(product.name)

3. templates

最後一個重要元件是 template。在上述 views.py 的範例中,回傳的是純文字,而不是我們常見的 HTML。Django 提供了自己的模板語法,可以用來回傳 HTML。我們需要在 products 目錄中手動建立 templates 目錄,並在該目錄中新增相應的模板範例。例如,以下範例中會使用 <h1> 標籤來顯示商品名稱。

<h1>{{ product.name }}</h1>

雖然以上範例用來介紹 Django,但目前該範例尚未成功啟動,還需要進一步進行資料庫建置和 URL 設定等配置。後續部分可以參考官方教學文件。本篇文章只專注於介紹 Django 的核心元件


上一篇
[Day 02] Poetry
下一篇
[Day 04] Gunicorn
系列文
Python 不止於數據,開發應用程式它也在行!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言