iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
Python

使用 Django 框架和 Wagtail,快速打造一個 CMS 網站系列 第 24

D24 - 加上客制化的 api 端點

  • 分享至 

  • xImage
  •  

我本身是 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",  # 添加這一行
     # ... 其他應用 ...
]

開始更改 api app ,設定好回傳的 response

找到 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 app 的 urls.py 設定,讓 client 端可以呼叫對應的端點

創建一個檔案在 api/urls.py

from django.urls import path
from .views import hello_world

urlpatterns = [
    path('helloworld/', hello_world, name='hello_world'),
]

在 mysite/urls.py 加上 api 的 設定

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

https://ithelp.ithome.com.tw/upload/images/20241006/20140622NSvaYT2WW7.png


上一篇
D23 - 快速的在 admin panel 中做出日曆
下一篇
D25 - 做出 login api
系列文
使用 Django 框架和 Wagtail,快速打造一個 CMS 網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言