Адаптер django-allauth перенаправляет

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

  1. Новый менеджер переходит на страницу регистрации с кнопкой «Зарегистрироваться в Google».
  2. Они нажимают кнопку и входят в Google.
  3. При обратном звонке из Google им предоставляется форма для дополнительной информации.
  4. Когда они отправляют эту форму, создается их учетная запись пользователя и профиль менеджера, и они перенаправляются на домашнюю страницу своей компании.

Я попытался обработать это «перенаправление на домашнюю страницу компании» через адаптеры. Проблема, с которой я столкнулся, заключается в том, что функция get_login_redirect_url выполняется после первоначального входа в Google, но до формы регистрации, в которой я собираю их график работы, поэтому я получаю DoesNotExist при перенаправлении адаптера, потому что он был вызван перед профилем менеджера был создан.

Как правильно выполнять эти перенаправления?

settings.py

ACCOUNT_SIGNUP_FORM_CLASS = 'managers.signup.ManagerProfileSignupForm'
SOCIALACCOUNT_AUTO_SIGNUP = False
SOCIALACCOUNT_ADAPTER = 'managers.adapter.ManagerSocialAccountAdapter'
ACCOUNT_ADAPTER = 'managers.adapter.ManagerAccountAdapter'


adapters.py

class ManagerSocialAccountAdapter(DefaultSocialAccountAdapter):
    def get_connect_redirect_url(self, request, socialaccount):
        return reverse('company_details', args=(request.user.managerprofile.company.pk,))

class ManagerAccountAdapter(DefaultAccountAdapter):
    def get_login_redirect_url(self, request):
        return reverse('company_details', args=(request.user.managerprofile.company.pk,))

person Jeff Miller    schedule 24.04.2014    source источник
comment
Вы случайно нашли решение для этого?   -  person Ahmed Aeon Axan    schedule 30.11.2014
comment
братан ты нашел решение   -  person Abhimanyu Singh    schedule 08.07.2019


Ответы (1)


Установите LOGIN_REDIRECT_URL в settings.py вашего приложения:

У меня есть это значение для перенаправления на домашнюю страницу:

LOGIN_REDIRECT_URL = '/'
person jordiburgos    schedule 27.04.2014
comment
Проблема с использованием параметра LOGIN_REDIRECT_URL заключается в том, что я не могу установить это значение динамически. В зависимости от пользователя я могу перенаправлять их на / companies / 1 или / companies / 2. Я предполагаю, что вам нужно реализовать адаптер, чтобы получить это динамическое перенаправление. - person Jeff Miller; 28.04.2014