Перенаправить зарегистрированных пользователей из реестра - PullRequest
0 голосов
/ 01 февраля 2020

Я хочу, чтобы вошедшие в систему пользователи перенаправляли на индекс при попытке go к форме регистрации. Мне удается сделать это, но я не могу проверить регистрационную форму, когда пользователь, который не вошел в систему, заполняет ее.

У меня есть пользовательское представление для регистрации:

class SignupView(UserPassesTestMixin, FormView):
    template_name = 'main/auth/register.html'
    form_class = forms.UserCreationForm

    def test_func(self):
        self.request.user.is_authenticated

    def handle_no_permission(self):
        if self.request.user.is_authenticated:
            return redirect('main:index')
        return self.get(self.request)

    def get_success_url(self):
        redirect_to = self.request.GET.get`enter code here`('next', 'main:index')
        return redirect_to

    def form_valid(self, form):
        response = super().form_valid(form)
        form.save()
        email = form.cleaned_data.get('email')
        first_name = form.cleaned_data.get('first_name')
        raw_password = form.cleaned_data.get('password1')
        logger.info('Nuevo registro para email=%s a través de SignupView', email)
        user = authenticate(email=email, password=raw_password)
        login(self.request, user)
        form.send_mail()

        return response

методы test_func(self) и handle_no_permission(self) используются для проверки подлинности пользователя

, но я думаю, что проблема в return self.get(self.request) Я использую его для загрузки формы, но когда я отправляю форму с правильными данными , это POST это, чтобы проверить это, но просто перезагрузить это снова. Я полагаю, мне нужно позвонить form_valid, но я не могу понять, как.

Любая помощь будет оценена !! Привет

1 Ответ

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

Вы можете использовать dispatch метод django CBV. Как ниже.

class SignupView(UserPassesTestMixin, FormView):
    template_name = 'main/auth/register.html'
    form_class = forms.UserCreationForm

    def dispatch(self, request, *args, **kwargs):
        if request.user.is_authenticated:
            return redirect('main:index')
        return super().dispatch(request, *args, **kwargs)

    # other methods

...