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",
),