最近よく「Django REST framework
」というDjango
のライブラリを使用するのでその使い方をまとめておきたいと思います。
今回は入門としてライブラリのインストールから簡単な動作確認までを説明していきたいと思います。
Django REST frameworkとは
Django
でWebAPI
を開発することをサポートしてくれるライブラリです。RESTful
なAPI
の開発をライブラリの標準としてサポートしています。
本家サイトはこちら
このライブラリの良いところとして、API
の動作検証をするためのWeb
コンソールが標準で準備されているという点が挙げられます。なので、他に特別なツールなどを導入しなくても簡単にAPI
のパラメータや戻り値を確認することができます。
前提条件
Django REST framework
は以下の条件で動作します。
- Python:2.7, 3.4, 3.5, 3.6, 3.7
- Django:1.11, 2.0, 2.1
では、早速Django REST framework
の使い方を説明していきたいと思います。
Django REST frameworkのインストール
インストールにはpip
を使用します。
$ pip install djangorestframework
Django
のsettings.py
のINSTALLED_APPS
にrest_framework
を追加します。
INSTALLED_APPS = (
...
'rest_framework',
)
ログインビューとログアウトビューを使えるようにするため、urls.py
を以下のように編集します。
urlpatterns = [
...
url(r'^api-auth/', include('rest_framework.urls'))
]
ここまでで、Django REST framework
のインストールと設定は以上です。
次は実際にサンプルを使用しながら動作の説明をしていきたいと思います。
サンプル
settings.py
にREST_FRAMEWORK
の設定情報を追加します。ここでは標準のパーミッションの設定を追加しています。
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
]
}
urls.py
に参考となるコードを追加していきます。
from django.conf.urls import url, include
from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets
# Serializersを定義します
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'is_staff')
# ViewSetsとしてビューの振る舞いを定義します
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
# Routersの設定を行います
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)
# URLのパスの設定を行います
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
サンプルを実際に動かしてみる
実際に作ったコードを動かしてみます。プロジェクト実行前にスーパーユーザを作成しておきます。
$ python manage.py createsuperuser
Username
、Email address
、Password
を入力してスーパーユーザを追加します。
この状態でrunserver
コマンドでプロジェクトを実行します。
$ python manage.py runserver
「http://localhost:8000/
」にアクセスするとこんな画面が表示されます。
次に「http://localhost:8000/users/
」にアクセスすると、先ほど登録したスーパーユーザの情報を「User List
」として確認することができます。
さらに「http://localhost:8000/users/1/
」にアクセスすることで、スーパーユーザの情報を1件だけ表示させることができます。
ここまでで、「一覧表示」と「詳細表示」がRESTful
に実行されていることが確認できました。データの「登録」「編集」「削除」の動作を確認するためには、登録したスーパーユーザの情報を使ってログインしたあとで動作を確認する必要があります。これは先ほど、「settings.py
」に記述した「DEFAULT_PERMISSION_CLASSES
」の権限設定により、ログインしているユーザ以外はデータの参照しかできないように制御されているためです。
では、早速ログインしてデータの「登録」「編集」「削除」を実行してみたいと思います。
まず、画面右上の「Log in
」をクリックしてログイン画面へ移動します。
最初に登録しておいたスーパーユーザの「Username
」と「Password
」を入力してログインします。
ログイン成功した状態で「http://localhost:8000/users/
」にアクセスすると、データ登録用のフォームが表示されるようになります。
このフォームに必要な情報を入力して「POST
」ボタンをクリックすると、データが登録されます。もう一度「http://localhost:8000/users/
」にアクセスするとデータが2件になっていることが確認できます。
今追加したデータを編集してみます。「User List
」の「url
」はリンクになっているので、2件目の「url
」をクリックして詳細画面へ移動します。編集画面にはデータ編集用のフォームが表示されていますので、そちらの値を編集して「PUT
」ボタンをクリックするとデータが編集できます。
削除は編集画面の「DELETE
」ボタンをクリックすれば実行されます。
最後に
以上、Django REST framework
の導入方法とWeb
コンソールの基本的な使い方を説明でした。サーバーサイドはAPI
として実行させつつ、クライアントサイドはAndroid・iOS
はネイティブアプリに、PC
はWeb
アプリと言った具合にプラットフォームに合わせて変更したい場合にDjango REST framework
はサーバサイドの仕組みとして非常に有用ですので、基本的な使い方はしっかりと押さえておきたいですね。
コメント