我尝试执行以下操作,但是既不重定向也不呈现作品:
from allauth.socialaccount.adapter import DefaultSocialAccountAdapter, get_account_adapter
from allauth.account.adapter import DefaultAccountAdapter
from django.shortcuts import render
class SocialAccountAdapter(DefaultSocialAccountAdapter):
def __init__(self, request=None):
DefaultSocialAccountAdapter.__init__(self, request)
def save_user(self, request, sociallogin, form=None):
"""
Saves a newly signed up social login. In case of auto-signup,
the signup form is not available.
"""
print('saving user')
u = sociallogin.user
u.set_unusable_password()
if form:
get_account_adapter().save_user(request, u, form)
else:
get_account_adapter().populate_username(request, u)
sociallogin.save(request)
print('right before redirect')
return render(request, 'accounts/signup.html',
context={'title': 'Edit Profile', 'register_update': 'Update'})
只有ImmediateHttpResponse(redirect('url'))
有效,但是随后它重定向到登录页面。
信号也不起作用。
答案 0 :(得分:0)
糟糕...我已经找到了解决自己问题的方法...
只需在views.py中的处理器视图中创建登录,就像这样:
def sign_in_processor(request):
user = request.user
required = [#User Fields that were not filled up by the social provider on creation]
for f in required:
if not f:
return redirect('profile_edit')
return redirect('home')
'profile_edit'
是基于UserChangeForm
或其衍生词中的django.contrib.auth.forms
的视图。