官網介紹 Django Ninja - Fast Django REST Framework
基本上, Django Ninja 就是在 django 上多加東西而已,
有超強的 pydantic 教學, 也可以自動產生文件,
更支援 django 原生的 ORM, 非常建議大家玩玩看 😄
這邊寫了一些範例, 建議大家直接進去 docs 裡面看.
目錄
安裝 dev-containers, >Dev Containers: Rebuild and Reopen in Container
如果不熟悉請參考 Vscode Dev Containers 教學
先 migrate
python3 manage.py migrate
執行 django ninja
./manage.py runserver
接著進入 doc http://127.0.0.1:8000/api/docs
如果你想玩玩, 直接在這個頁面上操作即可.
example 基本上就是一些範例, 沒有和 db 互動.
sheets, musics 有和 db 互動, 並且有 ORM 的操作.
musics_other 有和 db 互動, 並且有比較複雜的 ORM 操作, 以及 django ninja Filtering 的用法.
更方便定義 api, 範例如下
THROTTLE
定義 JWT, 範例如下
如果你想要設定黑名單, 可以使用 Blacklist App,
使用 django admin 模擬將 refresh token 加進去黑名單, 這樣就可以強制 user 重新取 refresh token 了.
或是使用 token.blacklist()
加入黑名單,
可參考範例 /api/auth/blacklist
這個 api.
db 中 token_blacklist_outstandingtoken
紀錄 refresh token.
db 中 token_blacklist_blacklistedtoken
紀錄 blacklisted token.
這部份就和 Ninja 沒關係了, 單純就是 Django 而已,
一般 django 開發要寄信, 需要設定 settings.py
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
然後去 call api post
/api/examples/send_email
(簡單的範例)
接著看你的 console log
那這時候, 有沒有比較好的方式可以看這些信 ❓
有的 😀
就是我們要介紹的 Mailpit - email testing for developers (UI 也不錯看 😁),
docker-compose.yml 這部份加上
......
mailpit:
image: axllent/mailpit
restart: unless-stopped
ports:
- "8025:8025"
- "1025:1025"
......
Django 需要修改設定 settings.py
# use mailpit
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "mailpit" # 對應 docker容器的 service
EMAIL_PORT = 1025 # 定義為 1025
然後再去 call api post
/api/examples/send_email
然後 console log 就不會再像之前一樣顯示了, 現在會顯示在 http://127.0.0.1:8025/
點進去也會有更詳細的資訊
一般的 Django 操作完全可以正常使用, 像是這邊我們來撰寫 Django admin.py,
@admin.register(Music)
class MusicAdmin(admin.ModelAdmin):
formfield_overrides = {
models.CharField: {
"widget": forms.TextInput(attrs={"style": "width: 500px; height: 50px;"})
},
}
成功覆寫了 style ( 把它拉長拉寬了 )
-
Python 3.12
-
VSCode