首页 > 解决方案 > 我如何覆盖 django allauth 注册成功 URL

问题描述

我正在使用allauth开发一个项目,并且我正在使用客户用户模型,我希望将新注册的用户重定向到与login_redirect_url完全不同的不同页面(比如个人资料表单页面),我已经尝试过了这边走

知道我怎样才能完成这项工作吗?

from django.shortcuts import get_object_or_404, redirect, render
from allauth.account.views import  LogoutView 
from django.urls import reverse_lazy
from allauth.account.views import SignupView 
from django.views.generic import TemplateView
from .models import CustomUser


class Signup(SignupView):
    success_url = reverse_lazy('business:company_profile')

    def get_success_url(self):
        return self.success_url

标签: djangodjango-allauth

解决方案


我不确定是否有办法覆盖SignUp重定向,因为当您在应用程序中注册时,您也会登录,这将使用login_redirect_url.

如果您覆盖login_redirect_url文档),如果某些字段丢失/为空,您可以更新您的逻辑并将用户重定向到他的个人资料?

    def get_login_redirect_url(self, request):
        if not request.user.your_custom_field:
            path = "/accounts/{username}/"
            return path.format(username=request.user.username)
        else
            return "/"

is_first_visit您还可以通过在CustomerUser模型上添加一个布尔值(使用default=True)来实现另一个逻辑,并False在他第一次访问后将其设置为。


推荐阅读