Django 入門編: REST Frameworkを使ってみる

モジュールのインストール

pip3 install djangorestframework django-filter

これでモジュールのインストールは完了です。
Djangoをインストールしていない人は、Djangoのインストールが必要です。

pip3 install Django

Djangoのプロジェクト・アプリを作成

django-admin startproject django_test

コマンドを実行するとdjango_testというディレクトリができていると思います。

cd django_test
python3 manage.py --version

作成されたディレクトリに移動しコマンドを実行してください。
Djangoのバージョンが表示されれば正常にインストールができています。
startappコマンドでDjangoのアプリの作成します。

python manage.py startapp django_app

Djagno REST Frameworkの組み込み

django_test/django_test/settings.pyを修正していきます。

修正前

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

修正後

INSTALLED_APPS = [
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'django_app',
     'rest_framework',
 ]

これでDjangoからREST Frameworkを読み出せるようになります。

modelsの作成

django_test/django_app/models.pyを修正していきます。

from django.db import models

class DjangoApp(models.Model):
     test_id    = models.IntegerField(default=0)
     test1_id   = models.IntegerField(default=0)

これでmodelsの作成が完了です。
Migration等はこちらをお読みください。

serializerの作成

django_test/django_app/serializer.pyを作成していきます。

from rest_framework import serializers
from .models import DjangoApp

class TestSerializer(serializers.ModelSerializer):
    class Meta:
        model = DjangoApp
        fields = ('title_id', 'test1_id')

これでserializerの作成が完了です。
fieldsはmodelsに定義してあり、APIとして出力したいカラムを指定します。

viewsの作成

django_test/django_app/views.pyを修正していきます。

import django_filters
from rest_framework import viewsets, filters
from .models import Applications
from .serializer import TestSerializer

class TestViewSet(viewsets.ModelViewSet):
queryset = Applications.objects.all()
serializer_class = TestSerializer

querysetにDjangoのクエリを指定します。
allではなくfilterやorder_byなど他のクエリに変更することができます。

URLパターンの追加

django_test/django_app/urls.pyを作成していきます。

from rest_framework import routers
from .views import TestViewSet

router = routers.DefaultRouter()
router.register(r'django_app', TestViewSet, 'django_app')

django_test/django_test/urls.pyを変更していきます。

修正前

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

urlpatterns = [
path('admin/', admin.site.urls),
]

修正後

from django.conf.urls import url, include
from django.contrib import admin
from django_app.urls import router as django_app_router

urlpatterns = [
     url('admin/', admin.site.urls),
     url(r'api/', include(django_app_router.urls)),
 ]

上記の設定が完了すると、/api/django_test/にアクセスできるようになります。