注册后重定向用户到登录页面。

3

我正在使用django-allauth,在网站注册后,用户被发送到个人资料页面,但我希望用户在注册后前往登录页面,并显示消息“您的帐户已创建”。

是否有任何方法可以实现这一点?

2个回答

2
你可以先重写django-allauth中的get_login_redirect_url()方法。然后使用Django消息框架发送消息。 settings.py:
ACCOUNT_ADAPTER = 'yourapp.adapter.AccountAdapter' # ---> change it to your path

yourapp/adapter.py:

from allauth.account.adapter import DefaultAccountAdapter
from django.contrib import messages

class AccountAdapter(DefaultAccountAdapter):
    def get_login_redirect_url(self, request):
        messages.success(request, 'Your account created.')
        return 'url/to/your/page' # --> change it to your page url

在创建账户后注销。
from django.contrib.auth import logout

logout(request)  # --> put it before return above

尝试后,我在控制台上得到了无限重定向循环,并且我的浏览器显示“页面无法正确重定向”。我正在返回“/accounts/login”。 - Akhil Garg
@AkhilGarg,这肯定会发生。您将在登录后进入登录页面,然后再次进行登录。因此,它将成为无限循环。重定向到一些不同的页面,例如/home或类似的页面。 - Astik Anand
请尝试一下,如果可以的话,请告诉我这是否有效。 - Astik Anand
如何在重定向之前注销? - Akhil Garg
@AkhilGarg,请检查更新的答案。如果这解决了您的问题,请投票并将答案标记为已接受。谢谢!!! - Astik Anand
显示剩余2条评论

0

in views.py

def register(request):
users=User.objects.all()
if request.method == 'POST':
    form = RegisterForm(request.POST)
    if form.is_valid():
        form.save()
        username = form.cleaned_data.get('username')
        messages.success(request, f'Account has been created successfully!, User can now login')
        return redirect('login') #login is the name of login view in urls.py
else:
    form = RegisterForm()
return render(request, 'users/home/register.html', {'form': form,'users':users})

当我手动创建表单时,这个功能是有效的,但当我使用all-auth时,它就不起作用了。 - Akhil Garg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接