post() получил неожиданный аргумент ключевого слова 'uidb64' Сбросить пароль rest_auth

Теперь я работаю над сбросом пароля с rest_auth, что бы ни было отправлено письмо и URL-адрес будет открыт, как это, но я добавляю значения на нем: Это страница, когда я нажимаю на URL-адрес, отправленный по электронной почте

и после заполнения полей и отправки запроса я получаю это: это ошибка, которую я получаю

и вот мои URL:

urlpatterns = [
path('', include('rest_auth.urls')),
path('login/', LoginView.as_view(), name='account_login'),
path('registration/', include('rest_auth.registration.urls')),
path('registration/', RegisterView.as_view(), name='account_signup'),
re_path(r'^account-confirm-email/', VerifyEmailView.as_view(),
     name='account_email_verification_sent'),
re_path(r'^account-confirm-email/(?P<key>[-:\w]+)/$', VerifyEmailView.as_view(),
     name='account_confirm_email'),
re_path(r'^password/reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', PasswordResetConfirmView.as_view(),
     name='password_reset_confirm')
]

и представление есть, но оно встроено в rest_auth:

class PasswordResetConfirmView(GenericAPIView):
"""
Password reset e-mail link is confirmed, therefore
this resets the user's password.

Accepts the following POST parameters: token, uid,
    new_password1, new_password2
Returns the success/fail message.
"""
serializer_class = PasswordResetConfirmSerializer
permission_classes = (AllowAny,)

@sensitive_post_parameters_m
def dispatch(self, *args, **kwargs):
    return super(PasswordResetConfirmView, self).dispatch(*args, **kwargs)

def post(self, request):
    serializer = self.get_serializer(data=request.data)
    serializer.is_valid(raise_exception=True)
    serializer.save()
    return Response(
        {"detail": _("Password has been reset with the new password.")}

1 ответ

Решение

Ваш URLconf вызывает метод post для вызова с двумя kwargs - uidb64 и token - но ваш метод post не принимает никаких kwargs. Чтобы избавиться от ошибки, просто добавьте kwargs в подпись метода post:

def post(self, request, *args, **kwargs):
    # ...
Другие вопросы по тегам