Представление users.views.view не возвращало объект HttpResponse. Вместо этого оно вернуло None

Я создаю веб-список дел вместе со своим другом. Итак, я создал функцию регистрации с аутентификацией по электронной почте, и она работает отлично. Я выложил ее на GitHub, а мой друг взял ее и попробовал на своем ноутбуке.

Но когда он нажимает "зарегистрироваться", он получает эту ошибку The view users.views.view didn't return an HttpResponse object. It returned None instead.

У нас буквально один и тот же код, поскольку он взял код из моего репозитория, мы оба используем виртуальную среду, устанавливая из одного и того же requirements.txt, и мы оба используем WSL2.

Вот код
views.py

class UserRegister(CreateView):
    form_class = UserRegisterForm
    template_name = 'users/form_register.html'
    redirect_authenticated_user = True
    success_url = reverse_lazy('tasks')

    # Forbid logged in user to enter register page
    def get(self, *args, **kwargs):
        if self.request.user.is_authenticated:
            return redirect('tasks')
        return super(UserRegister, self).get(*args, **kwargs)

    # Send email verification
    def post(self, request, *args, **kwargs):
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            user = form.save(commit=False)
            user.is_active = False
            user.save()

            current_site = get_current_site(request)
            subject = 'Activate your account'
            message = render_to_string('users/account_activation_email.html', {
                'user': user,
                'domain': current_site.domain,
                'uid': urlsafe_base64_encode(force_bytes(user.pk)),
                'token': account_activation_token.make_token(user),
            })
            user.email_user(subject, message)
            return redirect('login')
        else:
            form = UserRegisterForm()

form_register.html

-- Register -->
        <section>
        <div class="register-card">
        <h2>Register for an account</h2>
        <form method="POST">
            {% csrf_token %}
            <div class="txt_field">
                <input type="text" name="username" required placeholder="Username">
                <input type="email" name="email" required placeholder="Email">
                <input type="password" name="password1" required placeholder="Password">
                <input type="password" name="password2" required placeholder="Confirm password">
            </div>
        <div class="register-button"><input type="submit" value="Register"></div>

Вам нужно всегда возвращать некоторое HttpResponse. Если форма не действительна, то вы ничего не получите в ответ. Метод self.form_invalid возвращает такой ответ с ошибками, поэтому вы должны использовать его.

def post(self, request, *args, **kwargs):
    form = UserRegisterForm(request.POST)
    if form.is_valid():
        ...
        return redirect('login')
    else:
        return self.form_invalid(form)
Вернуться на верх