как я могу overide django регистрация Аллаха success_url - PullRequest
0 голосов
/ 26 февраля 2020

Я работаю над проектом, использующим 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

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Я не уверен, что есть способ отменить перенаправление SignUp, так как при регистрации в приложении вы также входите в систему, которая будет использовать login_redirect_url.

Если вы переопределите login_redirect_url ( документация ) Вы можете обновить свою логику c и перенаправить пользователя в его профиль, если некоторые поля отсутствуют / пусты?

    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 "/"

Вы также можете реализовать другую логику c, добавив bool is_first_visit на модель CustomerUserdefault=True) и установив ее на False после его первого посещения.

0 голосов
/ 26 февраля 2020

Код, который вы предложили, не работает? Какие ошибки это вызывает?

На первый взгляд предложенное вами представление должно работать. Вам просто нужно убедиться, что он используется в "urls.py".

...