姜戈全部 AUTHEMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL

DJANGO ALL AUTHEMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL

我正在尝试两种不同的重定向...一种用于正常登录,另一种用于电子邮件确认后的重定向

ACCOUNT_EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL = '/profile' 
LOGIN_REDIRECT_URL = '/'

但是当我启用登录时,AUTHENTICATED REDIRECT 转到 LOGIN_REDIRECT,但是当我禁用登录时,它转到 EMAIL_CONFIRMATION_REDIRECT 路由。

当我尝试在下方打印 email_confirmation 重定向 url 的适配器设置时,它仅显示 LOGIN_REDIRECT

def get_email_confirmation_redirect_url(self, request): 
    """ The URL to return to after successful e-mail confirmation. """ 

    if request.user.is_authenticated: 
     if app_settings.EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL: 
       return \ 
       app_settings.EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL 
     else: 
      return self.get_login_redirect_url(request) 
    else: 
     return app_settings.EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URL

我尝试在适配器中覆盖此 get_email_confirmation_redirect_url,但仍然无法正常工作。在我登录并重新验证之前,它没有选择 REDIRECT

由于如果用户未登录,ACCOUNT_EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL = '/profile' 将无法工作,我决定在 Django Allauth 中覆盖 DefaultAccountAdapter。我的登录是,如果用户加入应用的时间和登录的时间超过了某个阈值,那么重定向就会不同。所以我在我的用户应用程序中创建了一个适配器,如下所示:

class AccountAdapter(DefaultAccountAdapter):

  def get_login_redirect_url(self, request):
    expiry = 90 #seconds

    assert request.user.is_authenticated
    if (request.user.last_login - request.user.date_joined).seconds < expiry:
        url = 'profile/'
    else:
        url = settings.LOGIN_REDIRECT_URL
    return resolve_url(url)

然后我在 settings.py

中传递了这个适配器