【Django REST framework】チュートリアル学習記録 その1.Serialization
この記事では、Django REST frameworkのチュートリアルを学習していて、筆者が覚えておきたいと思ったことをまとめただけの内容となってます。
Django REST frameworkのModelSerializersを使うと、簡単にHTTPメソッドとモデルデータのCREATE・READ・UPDATE・DELETEができるみたいです。今回は、モデルとHTTPの結び付け方を一通り簡単にまとめます。
1. モデルの作成
今回は、Memoという名前のモデルを作っていこうと思います。
(models.py)
from django.db import models
class Memo(models.Model):
title = models.CharField(max_length=100, default='title')
description = models.TextField()
モデルを作ったら、マイグレーションをします。
(ターミナル)
python manage.py makemigrations
python manage.py migrate
makemigrationsをすると、migrationsフォルダにpythonファイルができているので、一度見てみることをおすすめ。(idというフィールドがあることを確認)
モデルを作ったら、それを扱うため?のSerializerを作っていきます。
2. Serializerの作成
作ったモデルを扱うためのSerializerを作ります。
アプリケーションフォルダにserializers.pyというファイルを新規作成します。
from rest_framework import serializers
from memo_app.models import Memo
# model serializer
class MemoSerializer(serializers.ModelSerializer):
class Meta:
# 対応するモデルを指定
model = Memo
# モデルのFieldを書く、ただしidを追加することを忘れずに
fields = ['id', 'title', 'description']
3. views.pyに処理を追加
from django.http import HttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.parsers import JSONParser
from memo_app.models import Memo
from memo_app.serializers import MemoSerializer
@csrf_exempt
def read_list(request):
"""
get all data
"""
if request.method == 'GET':
# モデルから全ての情報を取得
memos = Memo.objects.all()
serializer = MemoSerializer(memos, many=True)
return JsonResponse(serializer.data, safe=False)
上では、全てのデータをJson形式で返すRead処理しか記述していないが、serializerを使うとPOST=>create, PUT=>update, DELETE=>delete の処理が簡単にできる。
serializerを使うことで、JSON=>Model, Model=>Jsonが簡単にできるみたい。
# Model => Json
serializer = MemoSerializer(モデル)
serializer.data
# Json => Model
serializer = MemoSerializer(data=data)
if serializer.is_valid():
serializer.save()
3. urls.pyを設定
ここに関しては、Djangoのやり方と違いはないです
# projectのurls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
# memo_appにパス
path('', include('memo_app.urls')),
]
memo_app/url.pyを作成
from django.urls import path, include
from memo_app import views
urlpatterns = [
path('memos/', views.memo_list),
]
今回の記事はこんな感じです。
勉強してる感想としては、FastAPIよりも楽ができそうで良さそうといった感じ。
この記事が気に入ったらサポートをしてみませんか?