Django REST framework入門|定義から使い方まで

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2022年3月)

✔このような方へ向けて書かれた記事となります

「Django Rest Frameworkって何?」

「Django Rest Frameworkの始め方、使い方が知りたい!」

「言葉だけだとわからない。具体例も見てみたい。」

✔当記事を通じてお伝えすること

  • Django REST frameworkとは?大事な用語も合わせて解説
  • Django REST frameworkの始め方をステップ・バイ・ステップで解説
  • アプリで使用してる一例を公開|思ったより簡単にAPIって作れる!

特に、2つ目のサイトはReactフレームワークをフロントエンドに使い、Django REST frameworkをバックエンドとしてアプリが構成されています。

当記事の最後ではこちらのアプリで使用しているAPIを一例として解説していきます。

✔YouTube解説動画

当記事の内容は動画を見ながら進めると、約15分程度で完了します。

動画ならではの情報も解説しているので、記事と一緒にご覧ください。

動画の概要欄には、単元ごとのコードを紹介しているgithubページも載せています。

ReactとDjango Rest Frameworkを使った「QRコードアプリ」のコードと詳しい解説が、こちらのnoteで480円にて販売中。

目次は無料でご覧いただけます。

【React×Django】QRコードアプリの全コードを徹底解説

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間17万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

Django REST frameworkとは?大事な用語も合わせて解説

Django REST frameworkとは?

Django REST frameworkとは、簡単にWeb APIの構築ができるDjangoユーザーへ向けたPythonパッケージになります。(公式ドキュメントはこちら※全て英語になります

Django REST frameworkによって、データベース内等のデータをシリアル化し、他のフレームワークが読み取れる形でデータの受け渡しができます。

「API?」「 シリアル化?」

わからない方は下記をご覧ください。

大事な用語解説

わかる方は飛ばしてください。

もしまだわからないものがあれば一読すれば十分です。

フロントエンド、バックエンドについて

フロントエンド(「front end」)とは、ユーザーとデータのやりとりを行う側のことを言います。

ブラウザで表示される部分など、実際にユーザーの目に触れるパートのことです。

ホームページの場合フロントエンドで使用される主な言語は、HTML、CSS、JavaScriptになります。

バックエンド(「back end」)とは、Webサーバーやデータベースのやりとりを行う側のことを言います。

実際にユーザーの目には触れませんが、フロントエンドでユーザーが要望したことをWebサーバー、データーサーバー間でやりとりをします。

APIについて

APIとは、Application Programming Interfaceの略称で、複数のアプリケーション同士を連結、結合する役割を担っています。

APIを使うことで、複数のプログラムで機能やデータを共有することができます

例えば、バックエンドをDjango REST frameworkによりAPI化することで、フロントエンドとしてのアプリケーション(React等で作られたアプリやiOSアプリなど)から、バックエンド側のデータへアクセスすることが可能になります。

実際には、Django REST frameworkを使うことで、バックエンド側のデータをシリアライズ化し、別のアプリケーションへ渡すという作業が行われています。

シリアライズ・シリアライズ化とは?

シリアル化、もしくはシリアライズ(serializer)とは、データベース内に保存されているデータなどを文字列化バイト列化することを言います。

データをシリアライズ化することで、フロントエンド側のアプリケーションでデータが容易に読み込めるようになります。

Django REST frameworkの始め方をステップ・バイ・ステップで解説

Django REST frameworkは、WebAPIを簡単に構築できるツールです。

まずは、使用するための準備をしていきます。

インストール

使用している環境内で、pipを使ってインストールします。

pip install djangorestframework

初期設定

settings.pyで下記の通り追記します。

INSTALLED_APPS = [
    #...
    'rest_framework',
]

API用のフォルダを作成

必須ではありませんが、API用のフォルダを作っておくと便利です。

フォルダツリー

nippo(appフォルダ)
├── ....
├── api
│   ├── urls.py
│   └── views.py
├── ....

apiフォルダには、「urls.py」と「views.py」を作っておきます。(場合によっては、「serializers.py」を作る必要もあります。)

メインのurls.py

URLをAPI用のフォルダ内のurls.pyと紐づけておきます。

urlpatterns = [
    #...
    path('api-auth/', include('rest_framework.urls')),
    path("api/nippo/", include('nippo.api.urls))
]

以上で、インストールから初期設定まで完了です。

簡単なAPIを構築してみましょう。

アプリで使用してる一例を公開|思ったより簡単にAPIって作れる!

私の自作しているWebアプリのうち、QRコード作成アプリを使って説明していきます。

Fun Tools
ReactとDjangoで作成したWebアプリです。便利なツールを揃えているので、ぜひ立ち寄ってみてください。作り方はブログで紹介しています!

views.py

こちらがアプリのAPI側のコードです。

from rest_framework.response import Response
from rest_framework.views import APIView
from tools.models import QRcode
from django.conf import settings

from utils import domain_handler
import qrcode

class CreateQRView(APIView):
    def post(self, request, format=None):
        value = request.data["value"]
        media_root = settings.MEDIA_ROOT
        removed_text = value.replace("/", "").replace(":", "").replace("@", "")
        file_path = str(media_root) + f"/qr/{removed_text}.png"
        img = qrcode.make(value)
        qr_img_path = img.save(file_path)
        obj, created = QRcode.objects.get_or_create(value=value, image=file_path)
        media_path = domain_handler.get_absolute_media_root()
        path_ = media_path + f"qr/{removed_text}.png"
        return Response({"filepath": path_})

全て理解する必要はありません。

API構築に必要な部分だけ抜粋します。

from rest_framework.response import Response
from rest_framework.views import APIView

#割愛してます。

class CreateQRView(APIView):
    def post(self, request, format=None):
        #割愛してます。
        return Response({"filepath": path_})

ここでは、「APIView」というクラスベースビューを継承し、APIを構築しています。

from rest_framework.views import APIView
class CreateQRView(APIView):
    #....

APIViewについて詳しく知りたい方はこちらをどうぞ↓

APIViewでは、getメソッド、postメソッドを使い、それぞれのメソッドでリクエストがあった際の処理を記述します。

ここではpostメソッドのみ使用します。

    def post(self, request, format=None):
#割愛

postの引数は、「self」「request」「format=None」としておきましょう。

Responseコンストラクタを使い、シリアライズ化したデータをreturnします。

from rest_framework.response import Response

#...割愛してます。

    return Response({"filepath": path_})#パスには値が格納されています。

urls.py

from django.urls import path

from tools.api.views import (
                        CreateQRView,
                        )

urlpatterns = [
    path("qrmaker/", CreateQRView.as_view()),
]

URLの設定は通常のDjangoアプリと変わりません。

APIに直接アクセスしてみる

POSTメソッドのみ許可しているのでGETメソッドによるアクセスではエラーメッセージが出ます。

また、seralizerを使っていないので、良いAPIではありませんがひとまず動くので良しとします。

実際には直接アクセスして使う訳ではなく、フロントエンド側からのリクエスト受け取り、レスポンスを返す役割を担っています。

以上、簡単なアプリでの一例でした。

まとめ

当記事の内容をまとめます。

Django REST frameworkとは、カンタンにWeb APIの構築ができるDjangoユーザーへ向けたPythonパッケージになります。(公式ドキュメントはこちら※全て英語になります)

Django RESET frameworkを使うためには下記のステップで準備が必要です。

  1. パッケージのインストール
  2. settings.pyでの初期設定
  3. API用のフォルダに、適切なファイルを作成
  4. URLをAPI用のフォルダへ紐づけ

一例として、APIViewを使ったコードを見てきました。

ただ、なんとなくポイントだけ見ておけば良いです。

別記事でAPIViewについては詳しく解説していきます。

✔ウェブアプリを公開したい方へのおすすめ記事

【保存版】Apache WebサーバーでDjangoアプリを公開
Djangoが公開できる月500円~のレンタルサーバー
【初心者向け】ムームードメインで独自ドメインを取得する3ステップ
【実体験】マイIPの使い方を解説|固定IPアドレスを取得・設定する

☆こんなあなたにはレンタルサーバーもオススメ!

  • HTML」「JavaScript」「PHP」「CSS」でページを作っている
  • サーバーの設定や管理が少し心配
  • 月額のコストをできるだけ抑えたい

ロリポップ!レンタルサーバー月額99円から契約できて、Apacheも搭載している優れものです

顧客対応満足度もNo.1を獲得し昨今では安さ、使いやすさで評価が高まっています

無料でお試しもできるので、コスト、時間の節約にはもってこいです

詳しくは、こちらの公式サイトからご覧ください

タイトルとURLをコピーしました