画像




APIを構築するメモ。

  • Python v3.6.0
  • Django v2.2.1
  • Django REST framework v3.9.3




Django REST frameworkをインストール

pip install djangorestframework




インストール済みパッケージを確認

pip freeze


画像




サンプルとして「api」アプリケーションを追加

python manage.py startapp api


画像


アプリケーションが作成されているか確認

画像




作成されたアプリケーションをDjango REST framework用に整理

画像




プロジェクトを修正


/config/settings.py

# -- 上部省略 --

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#sampleアプリケーションをプロジェクトに追加
'sample.apps.SampleConfig',
#apiアプリケーションをプロジェクトに追加
'api.apps.ApiConfig',
#Django REST frameworkを読み込み
'rest_framework'
]

# -- 下部省略 --


/config/urls.py

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
path('admin/', admin.site.urls),
#sampleアプリケーションのURLconf読み込み
path('sample/', include('sample.urls')),
#apiアプリケーションのURLconf読み込み
path('api/', include('api.urls'))
]




「api」アプリケーションを設定


/api/serializers.py

from rest_framework import serializers
#モデルインポート
from sample.models import MainList
from sample.models import SubList

#メインリストシリアライザ
class MainListSerializer(serializers.ModelSerializer):
class Meta:
model = MainList
#取得フィールド設定
fields = ('title', 'datetime')

#サブリストシリアライザ
class SubListSerializer(serializers.ModelSerializer):
class Meta:
model = SubList
#取得フィールド設定
fields = ('title', 'totalnum')


/api/views.py

from rest_framework import viewsets
#モデルインポート
from sample.models import MainList
from sample.models import SubList
#シリアライズインポート
from .serializers import MainListSerializer
from .serializers import SubListSerializer

#メインリストビュー(GETのみ)
class MainListViewSet(viewsets.ReadOnlyModelViewSet):
queryset = MainList.objects.all()
serializer_class = MainListSerializer

#サブリストビュー(GETのみ)
class SubListViewSet(viewsets.ReadOnlyModelViewSet):
queryset = SubList.objects.all()
serializer_class = SubListSerializer


/api/urls.py

from django.urls import path, include
from rest_framework import routers
#ビューインポート
from . import views

#ルーター設定
router = routers.DefaultRouter()
router.register('mainlist', views.MainListViewSet)
router.register('sublist', views.SubListViewSet)

app_name = 'api'
urlpatterns = [
#ルーターを読み込み
path('', include(router.urls)),
]




簡易サーバー起動

python manage.py runserver


http://127.0.0.1:8000/api」にアクセスしAPIコンソールを表示

画像


http://127.0.0.1:8000/api/mainlist」にアクセスしAPIコンソールを表示

画像


http://127.0.0.1:8000/api/sublist」にアクセスしAPIコンソールを表示

画像







Q&A