我本身是 iOS 工程師,最常做的任務是「串接後端的 API,轉化成 Data Model 後,渲染成 UI」。並使用 Django REST Framework 作為後端框架。這個框架可以輕鬆地定義 API 端點,並利用其序列化工具直接將資料庫模型轉換成 JSON 格式。現在我們開始把 django rest framework 加進去。
wagtail 整合的框架,已經有 djangorestframework,你可以先下這個指令
pip freeze > requirements.txt
然後進入 requirements.txt,你應該可以看到這個 lib。
djangorestframework==3.15.2 (也可能是其他版本)
在設定檔 settings/base.py中的 INSTALLED_APPS 中添加 'rest_framework':
INSTALLED_APPS = [
# ... 其他應用 ...
"rest_framework",
# ... 其他應用 ...
]
對於創建 API 應用程式,使用標準的 Django startapp 命令通常就足夠了。這是因為 API 應用程式通常不需要 Wagtail 特定的頁面模型和模板。所以,創建一個新的應用來存放您的自定義 API。我們稱它為 'api':
python manage.py startapp api
然後,我們要更改 settings/base.py
INSTALLED_APPS = [
"wagtailcalendar",
"portfolio",
"base",
"blog",
"home",
"search",
"api", # 添加這一行
# ... 其他應用 ...
]
找到 mysite/api/view.py,更改內容,讓 api 回應的 Hello, World。
from django.http import JsonResponse
from rest_framework.decorators import api_view
@api_view(['GET'])
def helloworld(request):
return JsonResponse({"message": "Hello, World!"})
創建一個檔案在 api/urls.py
from django.urls import path
from .views import hello_world
urlpatterns = [
path('helloworld/', hello_world, name='hello_world'),
]
urlpatterns = [
path("django-admin/", admin.site.urls),
path("admin/", include(wagtailadmin_urls)),
path("documents/", include(wagtaildocs_urls)),
path("search/", search_views.search, name="search"),
path('api/', include('api.urls')), #加上這一行,才能把 api 加上
path("api/v2/", api_router.urls),
# Ensure that the api_router line appears above the default Wagtail page serving route
re_path(r"^", include(wagtail_urls)),
]
啟動
python manage.py runserver
然後用 postman 打一下 api/helloworld