Django allauth Перенаправить на подтверждение по электронной почте после регистрации в социальной сети

Я использую Твиттер для основной регистрации / входа и хочу перенаправить на ссылку "учетные записи / электронная почта" после регистрации в социальной сети, потому что я хочу заставить нового пользователя предоставлять свои электронные письма. Я нашел тот же вопрос и ответ от Anzel

from allauth.socialaccount.adapter import DefaultSocialAccountAdapter

class SocialAccountAdapter(DefaultSocialAccountAdapter):
      def save_user(self, request, sociallogin, form=None):
          super(DefaultSocialAccountAdapter, self).save_user(request, sociallogin, form=form)
          return redirect('/accounts/email/') 

но ответ не сработал для меня и получил это

AttributeError at /accounts/twitter/login/callback/

'super' object has no attribute 'save_user'

Request Method:     GET
Request URL:    http://localhost:8000/accounts/twitter/login/callback/?oauth_token=HSowSgAAAAAAuTblAAABVrLCOpE&oauth_verifier=cVrwyB2Vfk2Lgsrwg5fqE0wyzrfnwJ3H
Django Version:     1.9.2
Exception Type:     AttributeError
Exception Value:    

'super' object has no attribute 'save_user'

2 ответа

Решение

В setting.py я только добавил эти две строки и забыл про адаптер:

SOCIALACCOUNT_AUTO_SIGNUP = True
SOCIALACCOUNT_EMAIL_REQUIRED = True

и теперь после регистрации или входа он перенаправляет новых пользователей только в / account / social / signup /, и это представление фактически вынуждает пользователя отправлять свой eamil и процесс для проверки.

добавьте этот код в api/init.py

      from django.shortcuts import redirect
from allauth.exceptions import ImmediateHttpResponse

@receiver(user_signed_up)
def social_signed_up(request, user, **kwargs):
    
    social_account = SocialAccount.objects.filter(user=user).first()

    if social_account:
        raise ImmediateHttpResponse(
            redirect("https://example.com/foo/")
        )
Другие вопросы по тегам