Переадресация Джанго Аллаута при успешном изменении пароля
Этот вопрос уже поднимался здесь: https://github.com/pennersr/django-allauth/issues/468
Он закрыт и ему несколько лет, что может объяснить, почему он не работает для меня. Я просто пытаюсь перенаправить на другую страницу, кроме страницы смены пароля, после успешной смены пароля.
Вот мой код, который не делает страницу перенаправленной при успехе.
#ursl.py
url(r'accounts/password/change', views.custom_password_change),
url(r'^accounts/', include('allauth.urls'))
...
#views.py
from allauth.account.views import PasswordChangeView
from django.contrib.auth.decorators import login_required
class CustomPasswordChangeView(PasswordChangeView):
print("Getting Here")
@property
def success_url(self):
print('Inside Success')
return '/unknown/'
custom_password_change = login_required(CustomPasswordChangeView.as_view())
После отправки смены пароля мой терминал печатает "Getting Here", так что он определенно получает этот пользовательский вид. Но это не печать "Внутри успеха".
Любая помощь приветствуется! Спасибо!
0 ответов
success_url
это свойство, а не метод. Итак, вы можете сделать:
class CustomPasswordChangeView(PasswordChangeView):
success_url = '/unknown/'
Или, если вам нужны динамические URL-адреса (например, с доступом к пользователю), вы можете переопределить get_success_url()
, метод класса, который просто возвращает success_url
свойство. Пример этого ниже.
class CustomPasswordChangeView(LoginRequiredMixin, PasswordChangeView):
"""
Overriding Allauth view so we can redirect to profile home.
"""
def get_success_url(self):
"""
Return the URL to redirect to after processing a valid form.
Using this instead of just defining the success_url attribute
because our url has a dynamic element.
"""
success_url = reverse('users:user-detail',
kwargs={'username': self.request.user.username})
return success_url