
Hello World.
LiSMOtechの久津間です。
前回の記事ではDjango REST Framework(通称DRF)を利用したWEB API開発について紹介しました。
前回の記事【Python】Django REST Frameworkを使ったWEB API開発
今回の記事では、前回に引き続きDjango REST Frameworkと、Generic views(汎用ビュー)を使った登録処理や更新処理を確認していきます。
HTTPメソッド的に言えば、POSTやPUTなどのリクエストに該当する処理です。Generic viewsを使うことで記述量が少なく、簡単なモデル操作を行うAPIを作成することができますので、気になる方はさらっと確認してみてください。
先ずはシリアライザークラスの作成です。
# serializer.py
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ["id", "uid", "title", "category", "author", "created_at", "update_at"]
views.pyに作成専用(CreateAPIView)の汎用viewを記載します。
# views.py
from .models import Book
from .serializer import BookSerializer
from rest_framework import generics
class CreateBook(generics.CreateAPIView):
queryset = Book.objects.all()
serializer_class = BookSerializer
ルーティングの設定を行います。
# urls.py
from django.urls import path
from .views import CreateBook
app_name = 'api'
urlpatterns = [
path('book/new', CreateBook.as_view(), name='POST'),
]
以下のコマンドを実行しサーバーを起動させます。
python manage.py runserver
以下のURLにアクセスすることで、登録処理を確認することが出来るようになっています。
http://127.0.0.1:8000/api/book/new
必要な入力値をテキストフィールドに記載し、POSTすることで登録を確認することができます。
続いて更新処理を記載していきます。
シリアライザークラスは同様のまま、ビューとルーティングの設定を行います。
# views.py
# 追加
class UpdateBook(generics.UpdateAPIView):
queryset = Book.objects.all()
serializer_class = BookSerializer
ルーティングの設定を変更します。
# urls.py
from django.urls import path
from .views import CreateBook,UpdateBook # 追加
app_name = 'api'
urlpatterns = [
path('book/new', CreateBook.as_view(), name='POST'),
path('book/<str:id?>', UpdateBook.as_view(), name='PUT'), # 追加
]
サーバーを起動し、以下のURLにアクセスして、更新処理を確認します。
(数字の部分には既に登録されている情報のid値を入力します。
http://127.0.0.1:8000/api/book/1
任意の内容を入力し、PUTすることで登録情報が更新されます。
今回の記事ではGeneric views(汎用ビュー)を使った登録処理と更新処理を行いました。
簡単に記述量少なく実装できるため、簡易的なAPIを必要になる場面など活用の場もあるかと思います。
この他にも便利な汎用ビューなどがあるので是非ドキュメントを確認してみてください。
参考:https://www.django-rest-framework.org/api-guide/generic-views/#concrete-view-classes
NEXTGATE LiSMOtechでは中小企業を中心にブランディング・WEBマーケティングを活用したWEB戦略を提供しています。
企業課題・問題に関するご相談、WEBサイト制作やグラフィックデザイン制作のクリエイティブに関するご相談やご質問、お見積りなどお気軽にお問い合わせください。
平日10:00〜19:00
© NEXTGATE LiSMOtech All rights reserved