Django REST framework で JWT
takeharak
Requirements
今回の環境
TL;DR
- 依存パッケージ追加
pip install --user psycopg2
python -m pip install --user Django
python -m django --version
3.2.9
pip install --user djangorestframework PyYAML>=5.1 uritemplate>=3.0.0 Markdown>=3.0.0
pip install --user djangorestframework-simplejwt
- プロジェクトセットアップ
mysite プロジェクト作成
django-admin startproject mysite .
プロジェクト設定
# ./mysite/settings.py
# Application definition
INSTALLED_APPS = [
...
+ 'rest_framework',
+ 'rest_framework_simplejwt',
]
# Database
DATABASES = {
'default': {
- 'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': BASE_DIR / 'db.sqlite3',
+ 'ENGINE': 'django.db.backends.postgresql',
+ 'NAME': 'postgres',
+ 'USER': 'postgres',
+ 'PASSWORD': 'postgres',
+ 'HOST': 'db',
}
}
# REST framework
+ REST_FRAMEWORK = {
...
+ 'DEFAULT_AUTHENTICATION_CLASSES': (
...
+ 'rest_framework_simplejwt.authentication.JWTTokenUserAuthentication',
+ )
+ }
urls 設定
# ./mysite/urls.py
- from django.contrib import admin
from django.urls import path
+ from rest_framework_simplejwt.views import (
+ TokenObtainPairView,
+ TokenRefreshView,
+ )
urlpatterns = [
- path('admin/', admin.site.urls),
+ path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
+ path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
]
migrate 実行
./manage.py migrate
- OpenAPI 仕様の生成
./manage.py generateschema --file openapi-schema.yml
- デバッグ
ユーザーの作成
./manage.py createsuperuser --username=joe --email=joe@example.com
Password:
Password (again):
開発用サーバーを起動
./manage.py runserver
Insomnia に ./openapi-schema.yml をインポートして実行
- 依存パッケージ更新
python -m pip freeze > requirements.txt