Django allauth No Reverse Match

Django allauth не работает при использовании пользовательской модели пользователя с email в качестве первичного ключа, я узнал об этом, когда пытался протестировать функциональность смены пароля.

Reverse for 'account_reset_password_from_key' with keyword arguments '{'uidb36': 'mgodhrawala402@gmail.com', 'key': 'bbz25w-9c6941d5cb69a49883f15bc8e076f504'}' not found. 1 pattern(s) tried: ['accounts/password/reset/key/(?P<uidb36>[0-9A-Za-z]+)-(?P<key>.+)/$']

Я не против зайти в код, чтобы исправить эту проблему, так как мое приложение все еще находится в разработке, я все еще могу изменить аутентификацию, если у кого-то есть какие-либо предложения.

Самым простым решением этой проблемы будет добавление последовательности integer pk и просто обновление поля email на index unique, потому что, как вы видите, regex path не принимает формат email для uidb36, он принимает только 0-9A-Za-z.

Если вы должны использовать email в качестве pk, вы можете добавить другой путь к вашим урлам, чтобы принять шаблон email:

from allauth.account import views


path('accounts/', include('allauth.urls')),
re_path(
    r"^accounts/password/reset/key/(?P<uidb36>.+)-(?P<key>.+)/$",
    views.password_reset_from_key,
    name="account_reset_password_from_key_accept_email",
),
Вернуться на верх