djangoRestFramework(DRF)を使ってみる
参考:
・Django REST framework (DRF)入門 概念、考え方、全体像のImage付き
・Django REST framework 超入門
・【Django入門】REST FrameworkでAPIを作ってみよう
アプリケーションの作成
下のコマンドで適当なアプリケーションを作成します。
python3.6 manage.py startapp drf
RestFrameworkをインストール
今回はpipを使ってdjangorestframeworkをインストールします。
pip3 install djangorestframework
アプリとフレームワークの読み込み
settings.pyにアプリとrestframeworkを読み込ませます。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'drf', # 追加
'rest_framework', # 追加
]
モデルの作成
下記の通りシンプルなモデルを作成してみます。
from django.db import models
class Writer(models.Model):
name = models.CharField(max_length=128)
class Article(models.Model):
writer = models.ForeignKey(Writer, on_delete=models.CASCADE , related_name='articles')
title = models.CharField(max_length=512)
contents = models.TextField()
マイグレーション
マイグレートしてモデルの内容をデータースに反映させます。
python3.6 manage.py makemigrations drf
python3.6 manage.py migrate
serializer作成
seerializerは、models.pyによって定義されたObjectとJsonを相互に変換してくれる役割を担っているそうです。
「drf/serializers.py」を下記の通りに作成します。
from rest_framework import serializers
from drf.models import Article, Writer
class WriterSerializer(serializers.ModelSerializer):
class Meta:
model = Writer
fields='__all__'
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields='__all__'
apis.pyの作成
APIの実装が下記の通りです。
「drf/apis.py」を下記の通りに作成します。
from rest_framework import viewsets, routers
from drf.models import Article
from drf.serializers import ArticleSerializer
class ArticleViewSet(viewsets.ModelViewSet):
queryset = Article.objects.all()
serializer_class = ArticleSerializer
router = routers.DefaultRouter()
router.register(r'articles', ArticleViewSet)
ルーティング
「config/urls.py」を下記の通りに記述します。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('drf/',include('drf.urls')),
]
「drf/urls.py」を下記の通りに記述します。
from django.conf.urls import url, include
from drf import apis
urlpatterns = [
url('api/', include(apis.router.urls)),
]
データ投入
ターミナルから操作して適当なデータを入れてみます。
python3.6 manage.py shell
>>> from drf.models import Writer, Article
>>> Writer(name='taro').save()
>>> Writer.objects.all()
<QuerySet [<Writer: Writer object (1)>]>
writer = Writer.objects.all().first()
Article(writer=writer, title='Hello.', contents='Hello Django.').save()
>>> Article.objects.all()
<QuerySet [<Article: Article object (1)>]>
>>> quit()
データの確認
それではデータも入ったのでブラウザからAPIを叩いてみます。
ちゃんと表示されました!
とりあえず今回はこの辺にして、後日こちら「Django REST frameworkでAPIを作ってみた」で理解を深めていきたいと思います。
ディスカッション
コメント一覧
まだ、コメントがありません