Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 注册后,将用户重定向到登录页面_Python_Django_Django Allauth - Fatal编程技术网

Python 注册后,将用户重定向到登录页面

Python 注册后,将用户重定向到登录页面,python,django,django-allauth,Python,Django,Django Allauth,我正在使用django allauth,在站点上注册后,用户将被发送到配置文件页面,但我希望用户在注册后返回登录页面,并显示消息“您的帐户已创建” 有什么方法可以做到这一点吗?您可以首先从django allauth重写get\u login\u redirect\u url()方法 然后使用发送消息 设置。py: ACCOUNT_ADAPTER = 'yourapp.adapter.AccountAdapter' # ---> change it to your path from a

我正在使用django allauth,在站点上注册后,用户将被发送到配置文件页面,但我希望用户在注册后返回登录页面,并显示消息“您的帐户已创建”


有什么方法可以做到这一点吗?

您可以首先从
django allauth
重写
get\u login\u redirect\u url()
方法

然后使用发送消息

设置。py:

ACCOUNT_ADAPTER = 'yourapp.adapter.AccountAdapter' # ---> change it to your path
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
yourapp/adapter.py:

ACCOUNT_ADAPTER = 'yourapp.adapter.AccountAdapter' # ---> change it to your path
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
评论后回答更新:

ACCOUNT_ADAPTER = 'yourapp.adapter.AccountAdapter' # ---> change it to your path
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

视图中.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})

尝试后,我在控制台上得到无限重定向循环,页面在我的浏览器上没有正确重定向。我将返回“/accounts/login”@AkhilGarg,这肯定会发生。您将在登录后进入登录页面,然后再次登录。所以它将是无限循环。重定向到一些不同的页面,如
/home
或类似的页面。尝试一下,并告诉我这是否对您有效。重定向到
/home
有效。有没有可能在用户注册到该站点而不是仅仅登录之后,用户会被重定向到登录页面,然后他们必须登录才能访问该站点?有可能,但这并不理想。首先,您在重定向之前使用代码注销,但我们不应该这样做。当我使用所有身份验证手动创建表单时,这是有效的。它不起作用