認証用トークンの発行で「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の記事が引っ掛かった。

https://stackoverflow.com/questions/72102911/could-not-import-rest-framework-jwt-authentication-jsonwebtokenauthentication

とりあえず「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/にアクセスすると無事認証用トークンが発行発行できた。

投稿者 katsuyadaisuko

関連投稿

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です