Переадресация Джанго Аллаута при успешном изменении пароля

Этот вопрос уже поднимался здесь: 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
Другие вопросы по тегам