0

我正在使用 django 3.0.5、djangorestframework 3.11.0 和 djangorestframework-simplejwt 4.4.0

我已经使用 drf simple-jwt 进行身份验证,一切正常。密码错误时,响应为

{"detail":"No active account found with the given credentials"}

我需要自定义此响应。我在 TokenObtainSerializer 类的字典中检查了这条消息

   default_error_messages = {
        'no_active_account': _('No active account found with the given credentials')
    }

我试图覆盖这个类但没有成功。

有任何想法吗?提前致谢

4

1 回答 1

3

这可以通过创建自定义序列化程序和视图来实现。

序列化程序.py

# Import django packages
from django.utils.translation import gettext_lazy as _

# Import external packages
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer as SimpleTokenObtainPairSerializer


class TokenObtainPairSerializer(SimpleTokenObtainPairSerializer):
    default_error_messages = {
        'no_active_account': _('CUSTOM ERROR MESSAGE HERE')
    }

视图.py

# Import external packages
from rest_framework_simplejwt.views import TokenObtainPairView as SimpleTokenObtainPairView

# Import my packages
from gadget.auth.serializers import TokenObtainPairSerializer


class TokenObtainPairView(SimpleTokenObtainPairView):
    serializer_class = TokenObtainPairSerializer

最后,更新您的网址以使用您的新视图。

网址.py

# Import external packages
from rest_framework_simplejwt.views import TokenRefreshView

# Import my packages
from .views import TokenObtainPairView


urlpatterns = [
    # Token authentication
    path(r'token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path(r'token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
]

于 2020-10-06T23:39:34.640 回答