Django REST FrameworkでGeneric viewsを使った登録、更新処理

BACK END

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を作成することができますので、気になる方はさらっと確認してみてください。

 

 

DRFで登録する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することで登録を確認することができます。

 

 

DRFで更新するAPIを作成

続いて更新処理を記載していきます。

シリアライザークラスは同様のまま、ビューとルーティングの設定を行います。

# 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サイト制作やグラフィックデザイン制作のクリエイティブに関するご相談やご質問、お見積りなどお気軽にお問い合わせください。

お得な情報がLINEに届く!!

LINE公式アカウントはこちらから。

友だち追加

最新記事

CONTACT

NEXTGATE LiSMOtechでは中小企業を中心にブランディング・WEBマーケティングを活用したWEB戦略を提供しています。
企業課題・問題に関するご相談、WEBサイト制作やグラフィックデザイン制作のクリエイティブに関するご相談やご質問、お見積りなどお気軽にお問い合わせください。

平日10:00〜19:00

お電話の場合こちらから

043-305-4162

平日10:00〜19:00