手順
インストール
まずはDjango REST FrameworkとJWTを扱うためのライブラリをインストールします。
pip install djangorestframework pip install djangorestframework-jwt
Django REST Frameworkの設定
プロジェクトとアプリケーションの作成
次にDjango REST Frameworkのプロジェクトを作成します。django-admin startproject config .
でルートフォルダ直下にconfigフォルダが出来上がります。必須ではないですが実際の環境を想定し、apiアプリケーションも作成しておきます。
django-admin startproject config . django-admin startapp api
設定ファイルの編集
config/settings.py
にデフォルトの許可設定と認証のクラスを記述します。
REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ), 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication', ), }
config/urls.py
にJWTを使うためのimport文from rest_framework_jwt.views import obtain_jwt_token
とurlpatternsの中にエンドポイントを設定するpath('api-token-auth/', obtain_jwt_token),
を記述します。
from django.contrib import admin from django.urls import path from rest_framework_jwt.views import obtain_jwt_token urlpatterns = [ path('admin/', admin.site.urls), path('api-token-auth/', obtain_jwt_token), ]
スーパーユーザの作成とマイグレーション
python manage.py createsuperuser user name : admin password Passw0rd1234
python manage.py migrate
実行
サーバを起動する。
python manage.py runserver 0.0.0.0:8000
curlで設定したURLにusernameとpasswordを投げてみるとtokenが返ってきます。
curl -X POST -d "username=admin&password=Passw0rd1234" http://localhost:8000/api-token-auth/ {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNTg1MTExODM1LCJlbWFpbCI6IiJ9.cDKEDtt3dPNRQREGrC3JRuu0XzHSNSzkzdp_kvQONyQ"}``` リポジトリはこちら [https://github.com/yoshitaku-jp/sandbox-DRF-JWT:embed:cite]