Проблемы с Django при попытке показать сообщение об ошибке, когда форма недействительна

Описание

В моем приложении есть форма регистрации пользователя, но, при симуляции несоблюдения рекомендаций по валидации формы, я получаю ошибку httpresponse. Но, что я пытаюсь сделать, это вывести сообщение об ошибке, используя фреймворк сообщений из django Страница ошибки

Code

Мой шаблон

{% block body %}
    {% if messages %}
        {% for message in messages %}
            <div class="text-center alert alert-{{ message.tags }}">
                {{ message|safe }}
             </div>
        {% endfor %}
    {% endif %}

    {% load crispy_forms_tags %}

    <form class = "" method="post" action="{% url 'registro' %}">
            {% csrf_token %}
            {{registro_form|crispy}}
            <button class = "btn btn-primary" type="submit">Registrar</button>
    </form>

   
{% endblock body %}

Моя форма

class NovoUsuarioForm(UserCreationForm):
    class Meta:
        model = User
        fields = ['first_name', 'last_name', 'email']

    def save(self, commit = True):
        user = super(NovoUsuarioForm, self).save(commit=False)
        user.username = self.cleaned_data['first_name']
        user.email = self.cleaned_data['email']
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name'] 

        if commit:
            user.save()
        return user 

Мое мнение

class RegistroView(generic.View):
    def get(self,request, *args, **kwargs):
        return render(request, 'main/registro.html', {'registro_form': NovoUsuarioForm()})

    def post(self,request, *args, **kwargs):
        form = NovoUsuarioForm(request.POST)
        if form.is_valid():
            user = form.save()
            login(request,user)
            messages.success(request, "Registration successful." )
            return HttpResponseRedirect(reverse('pesquisa'))
        messages.error(request, "Unsuccessful registration. Invalid information.")

Другая информация

Когда я возвращаюсь на страницу формы со страницы ошибки после метода post, я получаю сообщение об ошибке

Страница после возврата от ошибки

Ваше представление не возвращает ответ HTTP, если форма НЕ действительна; у представления нет return для этого случая, поэтому оно возвращает None.

Вот обзор для вашего кода:

class RegistroView(generic.View):
    ...

    def post(self,request, *args, **kwargs):
        ...
        if form.is_valid():
            ...
            return HttpResponseRedirect(reverse('pesquisa'))

        ...

Я предлагаю добавить что-то вроде return HttpResponse(...) для случая, когда форма не действительна. Точное значение, которое вы вернете, зависит от вашего случая использования.

Вернуться на верх