|
35 | 35 |
|
36 | 36 | ### 第一節:路由(Routers) |
37 | 37 |
|
38 | | -- [卷 7:路由(上)傳統 Django 路由做法(兼章節概論)](https://blog.kyomind.tw/django-ninja-07/) |
| 38 | +- [卷 7:路由(上)傳統 Django 路由做法](https://blog.kyomind.tw/django-ninja-07/) |
39 | 39 | - [卷 8:路由(下)Django Ninja 路由設定](https://blog.kyomind.tw/django-ninja-08/) |
40 | 40 |
|
41 | 41 | ### 第二節:請求(HTTP Request) |
42 | 42 |
|
43 | | -- [卷 9:請求(一)Django Ninja 處理 HTTP 請求概論(兼論 FBVs)](https://blog.kyomind.tw/django-ninja-09/) |
44 | | -- [卷 10:請求(二)路徑參數(Path Parameters)](https://blog.kyomind.tw/django-ninja-10/) |
45 | | -- [卷 11:請求(三)查詢參數(Query Parameters)](https://blog.kyomind.tw/django-ninja-11/) |
| 43 | +- [卷 9:請求(一)Django Ninja 處理 HTTP 請求](https://blog.kyomind.tw/django-ninja-09/) |
| 44 | +- [卷 10:請求(二)路徑參數 - Path Parameters](https://blog.kyomind.tw/django-ninja-10/) |
| 45 | +- [卷 11:請求(三)查詢參數 - Query Parameters](https://blog.kyomind.tw/django-ninja-11/) |
46 | 46 | - [卷 12:請求(四)Request Body 與 Schema 介紹](https://blog.kyomind.tw/django-ninja-12/) |
47 | 47 |
|
48 | 48 | ### 第三節:回應(HTTP Response) |
49 | 49 |
|
50 | | -- [卷 13:回應(一)Django Ninja 處理 HTTP 回應概論](https://blog.kyomind.tw/django-ninja-13/) |
51 | | -- [卷 14:回應(二)巢狀結構回應](https://blog.kyomind.tw/django-ninja-14/) |
| 50 | +- [卷 13:回應(一)Django Ninja 處理 HTTP 回應](https://blog.kyomind.tw/django-ninja-13/) |
| 51 | +- [卷 14:回應(二)用 Schema 建立巢狀結構回應](https://blog.kyomind.tw/django-ninja-14/) |
52 | 52 | - [卷 15:回應(三)為何不用 ModelSchema?——相比 DRF,我更偏愛 Django Ninja 的理由](https://blog.kyomind.tw/django-ninja-15/) |
53 | 53 | - [卷 16:回應(四)Resolver 方法——欄位資料格式化](https://blog.kyomind.tw/django-ninja-16/) |
54 | 54 |
|
55 | 55 | ## 第四章:API 文件 |
56 | 56 |
|
57 | 57 | - [卷 17:API 文件(上)Django Ninja 文件實踐指南](https://blog.kyomind.tw/django-ninja-17/) |
58 | | -- [卷 18:API 文件(下)用 Pydantic Field 設定範例與預設值](https://blog.kyomind.tw/django-ninja-18/) |
| 58 | +- [卷 18:API 文件(下)Pydantic Field 設定範例與預設值](https://blog.kyomind.tw/django-ninja-18/) |
59 | 59 |
|
60 | 60 | ## 第五章:資料驗證與錯誤處理 |
61 | 61 |
|
62 | | -- [卷 19:資料驗證(上)單一欄位驗證——使用 Pydantic field_validator](https://blog.kyomind.tw/django-ninja-19/) |
63 | | -- [卷 20:資料驗證(下)Pydantic model_validator 實現「跨欄位」驗證](https://blog.kyomind.tw/django-ninja-20/) |
| 62 | +- [卷 19:資料驗證(上)Pydantic 單一欄位驗證](https://blog.kyomind.tw/django-ninja-19/) |
| 63 | +- [卷 20:資料驗證(下)Pydantic 跨欄位驗證](https://blog.kyomind.tw/django-ninja-20/) |
64 | 64 | - [卷 21:錯誤處理(上)HttpError 與自定義 HTTP 回應](https://blog.kyomind.tw/django-ninja-21/) |
65 | | -- [卷 22:錯誤處理(下)全域錯誤處理——深入解析 Exception Handlers](https://blog.kyomind.tw/django-ninja-22/) |
| 65 | +- [卷 22:錯誤處理(下)全域錯誤處理——使用 Exception Handlers](https://blog.kyomind.tw/django-ninja-22/) |
66 | 66 |
|
67 | 67 | ## 第六章,API 進階功能 |
68 | 68 | - [卷 23:檔案上傳——Django UploadedFile 介紹](https://blog.kyomind.tw/django-ninja-23/) |
|
73 | 73 |
|
74 | 74 | ## 第七章:身分認證與單元測試 |
75 | 75 |
|
76 | | -- 卷 28:身分認證——Session 認證與全域設定 |
77 | | -- 卷 29:單元測試——使用 Test Client 與 pytest 測試 API |
| 76 | +- [卷 28:身分認證——Session 認證與全域設定](https://blog.kyomind.tw/django-ninja-28/) |
| 77 | +- [卷 29:單元測試——使用 Test Client 與 pytest 測試 API](https://blog.kyomind.tw/django-ninja-29/) |
78 | 78 |
|
79 | 79 | ## 第八章:系列回顧與完賽心得 |
80 | 80 |
|
81 | | -- 卷 30:系列回顧與完賽心得 |
| 81 | +- [卷 30:系列回顧與完賽心得](https://blog.kyomind.tw/django-ninja-30/) |
0 commit comments