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):
# ...