<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>BenzHub</title><link>https://benzhub.github.io/post/django/</link><description>Recent content on BenzHub</description><generator>Hugo</generator><language>zh-TW</language><lastBuildDate>Wed, 27 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://benzhub.github.io/post/django/index.xml" rel="self" type="application/rss+xml"/><item><title>DRF Generic Views 與 Router 自動路由配置 | Django 教學</title><link>https://benzhub.github.io/post/django/025-drf-views-generic-router/</link><pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/025-drf-views-generic-router/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在前一篇文章中，我們學會了用 &lt;strong&gt;APIView&lt;/strong&gt; 和 &lt;strong&gt;ViewSet&lt;/strong&gt; 處理 API 請求。然而，當專案規模成長，你會發現許多 View 的 CRUD 邏輯幾乎一模一樣 &amp;ndash; 只是操作的 Model 和 Serializer 不同。&lt;strong&gt;DRF Generic Views&lt;/strong&gt; 正是為此而生，它透過 &lt;strong&gt;Mixin 組合模式&lt;/strong&gt; 讓你用極少的程式碼完成標準操作。搭配 &lt;strong&gt;Router&lt;/strong&gt; 自動路由配置，再加上 &lt;strong&gt;Pagination&lt;/strong&gt; 分頁與 &lt;strong&gt;Filtering&lt;/strong&gt; 過濾機制，你可以在幾分鐘內建構出功能完整、可維護且高效能的 RESTful API。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>DRF Views：APIView 與 ViewSet 完全解析 | Django 教學</title><link>https://benzhub.github.io/post/django/024-drf-views-apiview-viewset/</link><pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/024-drf-views-apiview-viewset/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在前面的章節中，我們學會了如何用 &lt;strong&gt;Serializer（序列化器）&lt;/strong&gt; 定義 API 的資料格式。但光有序列化器還不夠 — 我們還需要一個元件來接收 HTTP 請求、呼叫序列化器處理資料、並回傳適當的回應。這個元件就是 &lt;strong&gt;DRF Views（視圖層）&lt;/strong&gt;。Django REST Framework 提供了從底層的 &lt;strong&gt;@api_view&lt;/strong&gt; 裝飾器、&lt;strong&gt;APIView&lt;/strong&gt; 類別，到高度抽象的 &lt;strong&gt;ViewSet&lt;/strong&gt; 與 &lt;strong&gt;ModelViewSet&lt;/strong&gt; 的完整視圖階層，讓你可以根據需求選擇合適的抽象程度。本篇將完整解析這四種寫法的差異、適用場景，並透過同一個 Post API 的四種實作方式做對比。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>DRF Serializers 進階：巢狀序列化與自訂方法 | Django 教學</title><link>https://benzhub.github.io/post/django/023-drf-serializers-advanced/</link><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/023-drf-serializers-advanced/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在前一篇文章中，我們認識了 &lt;strong&gt;DRF Serializers&lt;/strong&gt; 的基本用法，包括 &lt;strong&gt;ModelSerializer&lt;/strong&gt; 的自動欄位產生與資料驗證。但在真實專案中，API 的資料結構往往不是扁平的——文章要帶出作者資訊、訂單要包含商品明細、評論要顯示用戶頭像。這些需求都指向同一個核心技術：&lt;strong&gt;巢狀序列化（Nested Serialization）&lt;/strong&gt;。本篇將深入探討巢狀序列化器、各種 &lt;strong&gt;關聯欄位（Relational Fields）&lt;/strong&gt; 的表示方式、&lt;strong&gt;SerializerMethodField&lt;/strong&gt; 自訂計算欄位，以及自訂 &lt;code&gt;create()&lt;/code&gt; / &lt;code&gt;update()&lt;/code&gt; 方法處理巢狀寫入，最後聚焦在 &lt;strong&gt;效能優化&lt;/strong&gt; 策略，幫助你打造高效且結構清晰的 API。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>DRF Serializers 基礎：序列化與反序列化完全解析 | Django 教學</title><link>https://benzhub.github.io/post/django/022-drf-serializers-basics/</link><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/022-drf-serializers-basics/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;DRF Serializers&lt;/strong&gt;（序列化器）是 &lt;strong&gt;Django REST Framework&lt;/strong&gt; 的核心元件，扮演著 Python 物件與 &lt;strong&gt;JSON&lt;/strong&gt; 之間的轉換橋樑。無論是將資料庫的 Model 實例轉換成 API 回應的 JSON 格式，還是將客戶端傳來的 JSON 資料驗證後寫入資料庫，都需要透過 Serializer 來完成。你可以把它理解為 API 層的 Form——&lt;strong&gt;Django Form&lt;/strong&gt; 處理 HTML 表單輸入，&lt;strong&gt;Serializer&lt;/strong&gt; 處理 API 資料的輸入與輸出。本文將從序列化（Serialization）與反序列化（Deserialization）的基本概念出發，帶你掌握 &lt;strong&gt;ModelSerializer&lt;/strong&gt;、欄位類型與選項、驗證機制等核心知識。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django REST Framework 入門：建立你的第一個 API | Django 教學</title><link>https://benzhub.github.io/post/django/021-drf-introduction/</link><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/021-drf-introduction/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Django REST Framework&lt;/strong&gt;（簡稱 &lt;strong&gt;DRF&lt;/strong&gt;）是 Python 生態系中建構 &lt;strong&gt;RESTful API&lt;/strong&gt; 的事實標準框架，建構於 &lt;strong&gt;Django&lt;/strong&gt; 之上，提供 &lt;strong&gt;Serializer&lt;/strong&gt;（序列化器）、&lt;strong&gt;ViewSet&lt;/strong&gt;、&lt;strong&gt;Router&lt;/strong&gt;、&lt;strong&gt;Authentication&lt;/strong&gt;（認證）與 &lt;strong&gt;Permissions&lt;/strong&gt;（權限）等完整工具組。本文將從 &lt;strong&gt;REST API&lt;/strong&gt; 的基礎概念出發，帶你安裝 DRF、建立第一個 API Endpoint，並認識 &lt;strong&gt;Browsable API&lt;/strong&gt; 與 DRF 的核心組件，為後續深入學習打下基礎。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django Admin 進階：Inline 編輯、自訂 Actions 與權限控制 | Django 教學</title><link>https://benzhub.github.io/post/django/020-django-admin-advanced/</link><pubDate>Tue, 09 Jun 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/020-django-admin-advanced/</guid><description>&lt;blockquote&gt;
&lt;p&gt;當你已經能在 &lt;strong&gt;Django Admin&lt;/strong&gt; 中註冊 Model 並進行基本的 CRUD 操作後，下一步就是深入掌握 Admin 的進階功能。本篇將帶你學會 &lt;strong&gt;Inline 編輯&lt;/strong&gt; 在同一頁面管理關聯資料、透過自訂 &lt;strong&gt;Actions&lt;/strong&gt; 實現批次操作、使用 &lt;strong&gt;fieldsets&lt;/strong&gt; 分組整理欄位，以及透過 &lt;strong&gt;權限控制（Permission Control）&lt;/strong&gt; 精確管理使用者的存取範圍，最後再介紹幾個實用的 &lt;strong&gt;效能優化（Performance Optimization）&lt;/strong&gt; 技巧。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django Admin 後台管理介面入門 | Django 教學</title><link>https://benzhub.github.io/post/django/019-django-admin-basics/</link><pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/019-django-admin-basics/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Django&lt;/strong&gt; 內建了一套功能強大的 &lt;strong&gt;Admin 後台管理介面&lt;/strong&gt;（Admin Site），只需少量設定就能為你的 &lt;strong&gt;Model&lt;/strong&gt; 自動產生完整的 &lt;strong&gt;CRUD&lt;/strong&gt;（Create、Read、Update、Delete）管理頁面。這是 Django「&lt;strong&gt;電池包含&lt;/strong&gt;」（batteries included）哲學的最佳體現之一。本篇將從啟用 Admin、建立管理員帳號開始，一步步帶你掌握 &lt;strong&gt;ModelAdmin&lt;/strong&gt; 的常用配置，打造一個功能完善的後台管理介面。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django Forms 進階：ModelForm、Formset 與檔案上傳 | Django 教學</title><link>https://benzhub.github.io/post/django/018-django-forms-advanced/</link><pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/018-django-forms-advanced/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在前一篇教學中，我們學會了 &lt;strong&gt;Django Forms&lt;/strong&gt; 的基礎用法，包含欄位定義、驗證流程與模板渲染。然而在實務開發中，表單往往需要與 &lt;strong&gt;Model&lt;/strong&gt; 緊密結合、一次處理多筆資料，或是支援 &lt;strong&gt;檔案上傳&lt;/strong&gt; 等進階需求。本篇將帶你深入 &lt;strong&gt;ModelForm&lt;/strong&gt; 的自動表單產生機制、&lt;strong&gt;Formset&lt;/strong&gt; 的批次資料管理、&lt;strong&gt;FileField&lt;/strong&gt; 與 &lt;strong&gt;ImageField&lt;/strong&gt; 的檔案處理，並介紹 &lt;strong&gt;Widget&lt;/strong&gt; 自訂、&lt;strong&gt;CBV&lt;/strong&gt;（Class-Based Views）整合，以及 &lt;strong&gt;Form Mixin&lt;/strong&gt; 設計模式，全面提升你的表單開發能力。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django Forms 表單建立與驗證入門 | Django 教學</title><link>https://benzhub.github.io/post/django/017-django-forms-basics/</link><pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/017-django-forms-basics/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在 Web 開發中，&lt;strong&gt;表單&lt;/strong&gt;（Form）是使用者與伺服器之間最重要的互動橋梁。&lt;strong&gt;Django Forms&lt;/strong&gt; 系統提供了 &lt;strong&gt;資料驗證&lt;/strong&gt;（Validation）、&lt;strong&gt;HTML 渲染&lt;/strong&gt;（Rendering）與 &lt;strong&gt;資料清理&lt;/strong&gt;（Cleaning）三合一的解決方案，讓開發者不需要手動解析 &lt;code&gt;request.POST&lt;/code&gt;，就能安全、有效率地處理使用者輸入。本篇將帶你從零開始認識 Django Forms 的核心概念，包含 Form 類別定義、欄位類型、表單渲染、驗證流程、自訂驗證方法，以及 &lt;strong&gt;CSRF&lt;/strong&gt; 防護機制。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django Templates 進階：模板繼承、自訂標籤與靜態檔案 | Django 教學</title><link>https://benzhub.github.io/post/django/016-django-templates-advanced/</link><pubDate>Fri, 05 Jun 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/016-django-templates-advanced/</guid><description>&lt;blockquote&gt;
&lt;p&gt;當你的 Django 專案頁面越來越多，你會發現每個模板都重複著相同的 HTML 結構 &amp;ndash; 導航列、頁尾、CSS 引入。&lt;strong&gt;模板繼承&lt;/strong&gt;（Template Inheritance）正是 Django 解決這個問題的核心機制，它讓你用 &lt;strong&gt;DRY 原則&lt;/strong&gt;（Don&amp;rsquo;t Repeat Yourself）組織模板架構。本文將深入探討 &lt;strong&gt;{% block %}&lt;/strong&gt; 與 &lt;strong&gt;{% extends %}&lt;/strong&gt; 的繼承機制、&lt;strong&gt;{% include %}&lt;/strong&gt; 引入可重用片段、自訂 &lt;strong&gt;Template Tags&lt;/strong&gt; 與 &lt;strong&gt;Template Filters&lt;/strong&gt;，以及 &lt;strong&gt;靜態檔案&lt;/strong&gt;（Static Files）的完整處理流程，帶你打造一套結構清晰、易於維護的模板系統。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django Templates 模板語言基礎入門 | Django 教學</title><link>https://benzhub.github.io/post/django/015-django-templates-basics/</link><pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/015-django-templates-basics/</guid><description>&lt;blockquote&gt;
&lt;p&gt;當 &lt;strong&gt;View&lt;/strong&gt; 處理完邏輯、準備好資料後，下一步就是把這些資料呈現在使用者面前。&lt;strong&gt;Django Templates&lt;/strong&gt;（模板系統）正是負責這個「呈現層」的核心元件。Django 內建了一套稱為 &lt;strong&gt;Django Template Language（DTL）&lt;/strong&gt; 的模板語言，讓你可以在 HTML 中嵌入變數、條件判斷和迴圈，將動態資料渲染成最終的網頁。本篇將帶你從零認識 DTL 的三種核心語法：&lt;strong&gt;變數&lt;/strong&gt;、&lt;strong&gt;模板標籤&lt;/strong&gt; 和 &lt;strong&gt;過濾器&lt;/strong&gt;，並透過完整範例實戰演練。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django URLs 路由設計與配置完全指南 | Django 教學</title><link>https://benzhub.github.io/post/django/014-django-urls/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/014-django-urls/</guid><description>&lt;blockquote&gt;
&lt;p&gt;當使用者在瀏覽器輸入一個網址並按下 Enter，Django 如何知道該呼叫哪個 View 來處理這個請求？答案就是 &lt;strong&gt;URL 路由系統（URLconf）&lt;/strong&gt;。URLconf 是 Django 請求處理流程的關鍵環節，它負責將傳入的 URL 對應到正確的 &lt;strong&gt;View&lt;/strong&gt; 函數或類別。本篇文章將從 &lt;strong&gt;urlpatterns&lt;/strong&gt; 基礎、&lt;strong&gt;path()&lt;/strong&gt; 與 &lt;strong&gt;re_path()&lt;/strong&gt; 函數、&lt;strong&gt;路徑轉換器（Path Converters）&lt;/strong&gt;、&lt;strong&gt;include()&lt;/strong&gt; 模組化路由、&lt;strong&gt;URL 命名&lt;/strong&gt; 與 &lt;strong&gt;reverse() 反向解析（Reverse Resolution）&lt;/strong&gt;、&lt;strong&gt;Namespace 命名空間&lt;/strong&gt; 到 &lt;strong&gt;RESTful 風格&lt;/strong&gt; 的 URL 設計最佳實踐，帶你全面掌握 Django 路由系統。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django Views：Class-Based Views 類別視圖深入解析 | Django 教學</title><link>https://benzhub.github.io/post/django/013-django-cbv/</link><pubDate>Tue, 02 Jun 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/013-django-cbv/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在前面的文章中，我們使用 &lt;strong&gt;函數式視圖（Function-Based Views，FBV）&lt;/strong&gt; 來處理各種請求。FBV 直觀好懂，但當專案規模成長，你會發現大量的視圖函數充斥著重複的邏輯——取得物件、渲染模板、處理表單、驗證權限，每個 view 都在做類似的事。這正是 &lt;strong&gt;Class-Based Views（CBV）類別視圖&lt;/strong&gt; 登場的時機。Django 內建了一套強大的 &lt;strong&gt;通用視圖（Generic Views）&lt;/strong&gt;，讓你用最少的程式碼完成最常見的 Web 開發模式。本篇文章將從 CBV 的核心概念出發，逐步帶你掌握每一個內建通用視圖，並在最後以完整的 &lt;strong&gt;CRUD&lt;/strong&gt; 範例收尾。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django Views：Function-Based Views 函數視圖入門 | Django 教學</title><link>https://benzhub.github.io/post/django/012-django-fbv/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/012-django-fbv/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在 Django 的 &lt;strong&gt;MTV&lt;/strong&gt;（Model-Template-View）架構中， &lt;strong&gt;View&lt;/strong&gt; 扮演著承上啟下的核心角色——它接收使用者的 &lt;strong&gt;HTTP 請求&lt;/strong&gt;（Request），執行商業邏輯，最後回傳 &lt;strong&gt;HTTP 回應&lt;/strong&gt;（Response）。本篇教學將聚焦於 &lt;strong&gt;Function-Based Views&lt;/strong&gt;（FBV，函數視圖），這是 Django 中最直觀、最容易上手的 View 撰寫方式。我們將從 &lt;strong&gt;HttpRequest&lt;/strong&gt; 與 &lt;strong&gt;HttpResponse&lt;/strong&gt; 物件開始，逐步學會 &lt;code&gt;render()&lt;/code&gt;、&lt;code&gt;redirect()&lt;/code&gt;、 &lt;strong&gt;JsonResponse&lt;/strong&gt; 等常用工具，最後完成一個完整的 &lt;strong&gt;CRUD&lt;/strong&gt; 範例。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django ORM 與 QuerySet 查詢語法完全指南 | Django 教學</title><link>https://benzhub.github.io/post/django/011-django-orm-queryset/</link><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/011-django-orm-queryset/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Django ORM&lt;/strong&gt;（Object-Relational Mapping，物件關聯映射）是 Django 框架最強大的核心功能之一。透過 &lt;strong&gt;QuerySet&lt;/strong&gt;（查詢集），你可以完全使用 Python 語法來操作資料庫，從基本的 &lt;strong&gt;CRUD&lt;/strong&gt; 到複雜的聚合分析，都不需要手寫一行 SQL。本文將完整介紹 QuerySet 的所有查詢方法與進階技巧，搭配實戰程式碼範例，作為你日常開發的終極參考。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django Migrations 資料庫遷移實戰指南 | Django 教學</title><link>https://benzhub.github.io/post/django/010-django-migrations/</link><pubDate>Sat, 30 May 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/010-django-migrations/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Django Migrations&lt;/strong&gt;（資料庫遷移）是 Django ORM 內建的 &lt;strong&gt;資料庫版本控制系統&lt;/strong&gt;，負責將 Python &lt;strong&gt;Model&lt;/strong&gt; 的結構變更安全地同步到資料庫。無論是新增欄位、修改資料型別還是刪除資料表，Migration 系統都能幫你產生對應的 SQL 並有序地執行，同時保留既有資料。本文將從基礎概念到進階實戰，帶你完整掌握 &lt;strong&gt;makemigrations&lt;/strong&gt;、&lt;strong&gt;migrate&lt;/strong&gt;、&lt;strong&gt;showmigrations&lt;/strong&gt; 等核心指令，以及遷移衝突處理、回滾與 &lt;strong&gt;資料遷移&lt;/strong&gt;（Data Migration）等實務技巧。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django Models 關聯關係：一對一、一對多、多對多完全解析 | Django 教學</title><link>https://benzhub.github.io/post/django/009-django-models-relationships/</link><pubDate>Fri, 29 May 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/009-django-models-relationships/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在 &lt;strong&gt;Django&lt;/strong&gt; 的 &lt;strong&gt;ORM&lt;/strong&gt;（Object-Relational Mapping，物件關聯映射）中，&lt;strong&gt;Model&lt;/strong&gt; 之間的關聯關係是資料庫設計的核心。Django 提供了三種關聯欄位：&lt;strong&gt;OneToOneField&lt;/strong&gt;（一對一）、&lt;strong&gt;ForeignKey&lt;/strong&gt;（一對多）和 &lt;strong&gt;ManyToManyField&lt;/strong&gt;（多對多），讓你用 Python 程式碼就能表達資料表之間的關係，無需手動撰寫 SQL。這篇文章將完整解析每種關聯的定義方式、查詢技巧與實戰應用。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django Models 欄位類型完全指南 | Django 教學</title><link>https://benzhub.github.io/post/django/008-django-models-field-types/</link><pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/008-django-models-field-types/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在 &lt;strong&gt;Django&lt;/strong&gt; 中，&lt;strong&gt;Model&lt;/strong&gt; 是與資料庫互動的核心，而定義 Model 最關鍵的一步就是選擇正確的 &lt;strong&gt;欄位類型（Field Types）&lt;/strong&gt;。每種欄位類型決定了資料的儲存格式、驗證規則與在 &lt;strong&gt;Django Admin&lt;/strong&gt; 中的呈現方式。本篇將完整介紹所有常用欄位類型與通用選項，讓你在建立 Model 時不再猶豫。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django Models 基礎：定義你的第一個資料模型 | Django 教學</title><link>https://benzhub.github.io/post/django/007-django-models-basics/</link><pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/007-django-models-basics/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在 &lt;strong&gt;Django&lt;/strong&gt; 的 &lt;strong&gt;MTV&lt;/strong&gt; 架構中，&lt;strong&gt;Model&lt;/strong&gt; 扮演著資料層的核心角色。透過 &lt;strong&gt;ORM&lt;/strong&gt;（Object-Relational Mapping）機制，你可以用 Python 類別定義資料模型，完全不需要手寫 &lt;strong&gt;SQL&lt;/strong&gt;。本篇將以部落格文章 &lt;strong&gt;Post&lt;/strong&gt; 為範例，帶你從零定義第一個 &lt;strong&gt;Django Model&lt;/strong&gt;，學會基本欄位類型、&lt;strong&gt;Meta&lt;/strong&gt; 設定、&lt;strong&gt;migrations&lt;/strong&gt; 流程，以及如何在 &lt;strong&gt;Django Shell&lt;/strong&gt; 與 &lt;strong&gt;Admin&lt;/strong&gt; 後台操作資料。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django 設定檔深入解析：settings.py 完全指南 | Django 教學</title><link>https://benzhub.github.io/post/django/006-django-settings-deep-dive/</link><pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/006-django-settings-deep-dive/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在 Django 專案中， &lt;strong&gt;settings.py&lt;/strong&gt; 是整個應用程式的配置中心（Configuration Center），從資料庫連線、安全金鑰到靜態檔案路徑，所有核心行為都由這個檔案控制。理解 &lt;strong&gt;settings.py&lt;/strong&gt; 中每一項設定的用途與最佳實踐，是從 Django 初學者邁向專業開發者的必經之路。本文將逐一拆解 &lt;strong&gt;DEBUG&lt;/strong&gt;、&lt;strong&gt;SECRET_KEY&lt;/strong&gt;、&lt;strong&gt;DATABASES&lt;/strong&gt;、&lt;strong&gt;MIDDLEWARE&lt;/strong&gt; 等關鍵設定，並介紹如何使用 &lt;strong&gt;python-decouple&lt;/strong&gt; 管理環境變數，讓你的 Django 專案同時兼顧開發便利性與生產環境安全性。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django 專案結構與 MTV 架構模式 | Django 教學</title><link>https://benzhub.github.io/post/django/005-django-project-structure-mtv/</link><pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/005-django-project-structure-mtv/</guid><description>&lt;blockquote&gt;
&lt;p&gt;理解 &lt;strong&gt;Django&lt;/strong&gt; 的專案結構是高效開發的第一步。Django 採用獨特的 &lt;strong&gt;MTV&lt;/strong&gt;（Model-Template-View）架構模式，將資料處理、頁面呈現與業務邏輯清楚分離。同時，Django 以 &lt;strong&gt;Project&lt;/strong&gt;（專案）與 &lt;strong&gt;App&lt;/strong&gt;（應用）的階層式組織來管理程式碼，讓每個功能模組都能獨立開發、測試與重複使用。本篇將帶你完整剖析 Django 的目錄結構與 MTV 架構，幫助你建立紮實的開發基礎。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Django 是什麼？框架介紹與安裝 | Django 教學</title><link>https://benzhub.github.io/post/django/004-django-introduction-and-installation/</link><pubDate>Sun, 24 May 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/004-django-introduction-and-installation/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Django&lt;/strong&gt; 是以 &lt;strong&gt;Python&lt;/strong&gt; 撰寫的高階 &lt;strong&gt;Web 框架&lt;/strong&gt;（Web Framework），自 2005 年發布以來，憑藉「電池全包」（&lt;strong&gt;Batteries Included&lt;/strong&gt;）的設計哲學，成為 Python 生態系中最成熟、最受歡迎的 Web 開發框架之一。本文將帶你認識 &lt;strong&gt;Django&lt;/strong&gt; 的歷史與核心理念，並從零開始完成安裝與第一個專案的建立。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Python 基礎語法速覽：給 Django 學習者的快速入門 | Django 教學</title><link>https://benzhub.github.io/post/django/003-python-basics-for-django/</link><pubDate>Sat, 23 May 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/003-python-basics-for-django/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在開始學習 &lt;strong&gt;Django&lt;/strong&gt; 之前，你需要具備一定的 &lt;strong&gt;Python&lt;/strong&gt; 基礎。本篇文章是為 Django 學習者量身打造的 Python 語法速覽，聚焦於開發 Django 時最常用到的語法知識，包括 &lt;strong&gt;變數與資料型別&lt;/strong&gt;、&lt;strong&gt;資料結構&lt;/strong&gt;、&lt;strong&gt;控制流程&lt;/strong&gt;、&lt;strong&gt;函數&lt;/strong&gt;、&lt;strong&gt;類別與物件導向&lt;/strong&gt;、&lt;strong&gt;裝飾器（Decorators）&lt;/strong&gt; 以及 &lt;strong&gt;模組匯入&lt;/strong&gt;，幫助你用最短時間做好準備。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Python 環境安裝與設定 | Django 教學</title><link>https://benzhub.github.io/post/django/002-python-environment-setup/</link><pubDate>Fri, 22 May 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/002-python-environment-setup/</guid><description>&lt;blockquote&gt;
&lt;p&gt;在開始學習 &lt;strong&gt;Django&lt;/strong&gt; 之前，第一步是建立一個穩定且正確的 &lt;strong&gt;Python&lt;/strong&gt; 開發環境。本篇教學將手把手帶你在 &lt;strong&gt;Windows&lt;/strong&gt; 、 &lt;strong&gt;macOS&lt;/strong&gt; 與 &lt;strong&gt;Linux&lt;/strong&gt; 三大平台安裝 &lt;strong&gt;Python 3.10+&lt;/strong&gt; ，並介紹 &lt;strong&gt;pip&lt;/strong&gt; 套件管理器、 &lt;strong&gt;venv&lt;/strong&gt; 虛擬環境的使用方式，以及 &lt;strong&gt;VS Code&lt;/strong&gt; 編輯器的推薦設定，為後續的 Django 開發之旅打下堅實基礎。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>什麼是 Web 開發？前端、後端、全端入門 | Django 教學</title><link>https://benzhub.github.io/post/django/001-what-is-web-development/</link><pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate><guid>https://benzhub.github.io/post/django/001-what-is-web-development/</guid><description>&lt;blockquote&gt;
&lt;p&gt;每天我們瀏覽網頁、查看社群動態、線上購物，這一切的背後都是 &lt;strong&gt;Web 開發&lt;/strong&gt;（Web Development）的成果。但你是否好奇過，當你在瀏覽器輸入一個網址按下 Enter，到頁面出現在眼前的這短短幾秒內，究竟發生了什麼事？這篇文章是 &lt;strong&gt;Django&lt;/strong&gt; 教學系列的第一篇，我們先不急著寫程式，而是從最基礎的概念開始——搞懂 &lt;strong&gt;Web&lt;/strong&gt; 的運作原理、認識 &lt;strong&gt;前端&lt;/strong&gt; 與 &lt;strong&gt;後端&lt;/strong&gt; 的分工，以及為什麼我們選擇 &lt;strong&gt;Python&lt;/strong&gt; + &lt;strong&gt;Django&lt;/strong&gt; 作為這趟旅程的技術棧。&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>