我想修改用户在确认电子邮件地址后通过单击确认电子邮件中的链接重定向到的位置。
我正在使用Django 2.0.10与allauth、rest-auth和rest-framework。对于电子邮件验证,我使用默认的allauth视图。
在我的settings.py中,我设置了以下内容:
INSTALLED_APPS = [
'api',
'dynamic_rest',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'rest_framework.authtoken',
'django.contrib.sites',
'allauth.account',
'allauth.socialaccount',
'rest_auth.registration',
'users',
'lists',
'rest_auth',
'allauth', # needs to be at the end so custom templates are found first
]
EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL = '/'
print('EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL')
print(EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL)
urls.py
from allauth.account.views import confirm_email
urlpatterns = [
re_path(r'^rest-auth/registration/account-confirm-email/(?P<key>[-:\w]+)/$', confirm_email,
name='account_confirm_email'),
...
]
我的设置'/'确实在控制台中打印出来,所以我认为应用程序已经获取了它。但是,当我按照电子邮件中的链接访问页面http://localhost:8000/api/v1/rest-auth/registration/account-confirm-email/MTQ:1gpYgM:_KpNYl-nd2iiG0qLIRRdVrmF8SM/,然后单击“确认”按钮时,我被重定向到默认页面/accounts/profile,而不是由EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL指定的首页。
此设置似乎也没有任何效果:
ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = False 我想禁用它,因为登录无法正常工作——令牌无效。也许allauth和rest-auth的登录方式不同?如果用户在验证电子邮件地址后需要重新登录,我不介意,但目前的行为是用户看起来已登录,但其实未登录,这是不可接受的。
我做错了什么?如何自定义在确认电子邮件地址后将用户重定向到哪里?感谢您的帮助!