認証用トークンの発行で「djangorestframework-jwt」を使うという記事を多く見かけたが、やってみるとうまくいかなかった。
urls.py
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('auth/', obtain_jwt_token),
]
サーバー起動時のエラーメッセージ
ImportError: Could not import ‘rest_framework_jwt.authentication.JSONWebTokenAuthentication’ for API setting ‘DEFAULT_AUTHENTICATION_CLASSES’. ImportError: cannot import name ‘smart_text’ from ‘django.utils.encoding’
エラーメッセージでそのままググるとstackoverflowの記事が引っ掛かった。
とりあえず「djangorestframework-jwt」はもうメンテナンスされていないので、代わりに「djangorestframework-simplejwt」を使えばいいとのこと。
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'),
]
api/token/にアクセスすると無事認証用トークンが発行発行できた。