路由(上)傳統 Django 路由做法

2024 iThome 鐵人賽

這是 Django Ninja 系列教學的第 7 篇。我們來到系列的第三章

第三章是全系列的重頭戲,因為我們要介紹 Django Ninja 的核心部分——API

我把本章分成了三個小節:

  1. 第一節:路由(Router)
  2. 第二節:請求(Request)
  3. 第三節:回應(Response)

第三章也是唯一有區分小節的篇章。

現在我們進入第一節——路由。讓我們先了解一下本節的學習重點。


本節導覽

本節一共有兩篇,分別是:

  • 卷 7:路由(上)傳統 Django 路由做法
  • 卷 8:路由(下)Django Ninja 路由設定

為什麼要這樣安排呢?因為端點與路由是 API 請求的起點

沒有它們,你的 view 函式根本無法接收請求,更不用說回應了。因此,路由設定必須放在第一位,作為 API 開發的學習入口。

所謂的「端點」(endpoints),你就簡單想成 API 所在的 URL 就可以了。

本文主旨

其次,Django Ninja 的路由設定與傳統 Django 或 Django REST framework(以下簡稱 DRF)的路由設定有很大的不同,反而更接近 FastAPI 或 Flask 風格。

這是我在學習 Django Ninja 時遇到的第一個門檻(畢竟我寫了 2 年的 DRF😅),所以決定分成上下兩篇文章詳細解說,幫助你打好基礎、減少混淆。

本文的重點是介紹 Django 傳統路由的設定方式。讓我們開始吧!

Django Ninja 06:環境設定 × 如何使用本專案

2024 iThome 鐵人賽

這是 Django Ninja 系列教學的第 6 篇。

前一篇我們了解了整個專案所使用的 Python 開發工具。

本文將帶領你一步步完成,有關範例專案的環境設定:從安裝 Python、Poetry、clone 專案至本地、建立 Python 虛擬環境,到成功啟動 Django

即使你從未接觸過這些工具,按著本文的指南,應該也能順利完成環境設定並運行。

值得一提的是,我已經使用 Mac 很長一段時間,對 Windows 環境不甚熟悉,但我會盡可能提供相關的替代方案或指引。

好,我們開始吧!

Python 現代開發工具介紹

2024 iThome 鐵人賽

這是 Django Ninja 系列教學的第 5 篇。

在現代軟體開發中,工具不僅能提高開發效率,還能改善程式碼品質,讓專案的管理與維護變得更加輕鬆。

本文將介紹幾個重要的 Python 開發工具,討論它們在專案中的應用,讓讀者快速了解它們的定位與價值

如果你看過我的部落格,應該會發現,我花了不少篇幅在大力推廣這些現代開發工具,為它們撰寫了一篇又一篇的詳細文章教學。

因此,我們不會深入這些工具的操作細節,而是著眼於概念,以及它們如何解決開發中的痛點。我會附上相關教學文章的連結,讓有興趣的讀者可以進一步學習。

值得一提的是,這些 Python 的現代開發實踐,都是我看了開發者 Wei Lee(李唯)的「Python Table Manners」系列後,才一一學習並落實的。個人強力推薦此系列!

API 範例專案介紹:忍者論壇

2024 iThome 鐵人賽

這是 Django Ninja 系列教學的第 4 篇。

在第一章中,我們對 Django Ninja 做了全方位的介紹,並且分析了它與 Django REST framework 的主要區別。

相信你對 Django Ninja 已有了一定的了解。

接下來,我們將進入第二章:專案介紹與設定

本章重點

我們將透過一個 CRUD API 範例專案,幫助你在實踐中運用 Django Ninja 的概念。

本章將對專案概念進行介紹,包括模型設計與現實世界中的對應。(卷 4)

接著介紹專案使用的 Python 開發工具(卷 5)。最後會手把手帶你,安裝專案到本機並確保它正常運行(卷 6)。

其餘有關 API 的程式碼,將在第三章陸續介紹與實作。

Django Ninja 介紹——與 Django REST framework 主要區別

2024 iThome 鐵人賽

這是 Django Ninja 系列教學的第 3 篇。

選擇任何工具之前,我們通常會先了解它能解決的問題,以及是否符合與自己的需求

本文將介紹 Django Ninja 這個現代化的 API 框架,探討它的起源和主要特點,並重點比較它與 Django REST framework 之間的差異,讓你能夠更好地選擇適合的工具。


Django Ninja 起源

Django Ninja 的起源與 FastAPI 有著密切的關係。

Django Ninja 可以被視為「Django 版的 FastAPI」,它比原生 FastAPI 能夠更好地與 Django 整合。

Django Ninja 的官方文件中,作者 Vitaliy Kucheryaviy 解釋了為什麼建立這個框架。這源於他在 Django 專案中使用 FastAPI 時遇到的一些挑戰,特別是在整合方面。

因此,他決定自己建立一個更合適的工具,從而誕生了 Django Ninja。

可想而知,Django Ninja 深受 FastAPI 的啟發。事實上,它同時也借鑑了不少 Django REST framework 的優秀實踐——這是後發者的優勢

文件中引用了這麼一句話,這是個常見的疑問:

Django Ninja looks basically the same as FastAPI, so why not just use FastAPI?

答案就是:兩者的整合不完美,而 Django Ninja 提供了一個更加適合 Django 開發者的版本。

Django Ninja 02:架構與章節導覽

2024 iThome 鐵人賽

這是 Django Ninja 系列教學的第 2 篇。

上一篇中,我們講述了系列的整體方向。現在,我將進一步深入,為你詳細介紹系列的架構與各個章節安排。

可以說,本文就是整個系列的藍圖。

一般而言,架構介紹通常會直接放在第一篇的後半段(如果有的話),但我決定獨立成一篇。

原因無他,我在整個教學架構上花費了相當的心思,希望為讀者提供一個全面的概覽。這有助於你快速進入狀況,並了解自己目前正在學習主題哪一個部分。

話不說多,讓我們一一介紹。

Django Ninja 01:系列導讀 × 目標讀者

2024 iThome 鐵人賽

這是 Django Ninja 系列教學的第 1 篇。

在這個 30 天的系列文章中,我們將詳細探討 Django Ninja 的基礎實作,透過文字教學範例專案的程式碼,帶你一步一步熟悉這個強大而靈活的 Django API 開發框架。

作為 Django 生態系統中的新星(誕生於 2020 年),Django Ninja 融合了 Django 的穩定性和 FastAPI 的現代特性——Python 的型別提示(透過 Pydantic 實現)。這種強強結合,為開發者提供了一個健全、高效、直觀的 API 開發體驗。

不論你是經驗豐富的 Django 開發者,還是剛進入 API 開發領域的新手,這個系列都會為你提供實用的 Django Ninja 實戰經驗與技巧。

我們將從背景介紹、基礎概念開始,逐步深入探討 Django Ninja 的每個部分,幫助你快速掌握這個現代化 API 開發工具。


建議前置技能

本系列的定位是「入門級」,但這裡所謂的入門,指的是 Django Ninja 框架的入門。

所以,要充分利用好教學內容與範例專案程式碼,仍建議讀者具備以下技能:

  • Python 基礎知識:熟悉 Python 語法,有 Python 開發經驗者佳。
  • Django 基礎:了解 Django 的基本組成,比如 ORM、Views、MTV 架構等。但無須了解 Templates 部分——因為我們是開發 API。
  • HTTP 與 Web API 概念:知道什麼是 HTTP、Web API、前後端分離,並對 RESTful API 設計原則有基本理解。
  • 版本控制:為了能夠善用並操作範例專案,需要熟悉 Git、GitHub 的基本操作。

具備這些技能將幫助你更好地理解和應用本系列的內容。如果你對某些概念不太熟悉,也不用擔心,我們會在必要時進行一定的講解。