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コンソールを表示