'Method Not Allowed (GET): /perfil/

When I try to define the method as 'POST' for this html on the views, it says Method Not Allowed (GET): / Above is how the html document is written:

{% extends 'base.html' %}
{% load crispy_forms_tags %}

{% block 'conteudo' %}
<h1 class="control-label">Cadastrar</h1>

<div>
    <form method="POST">
        {% csrf_token %}

        {{ userform|crispy }}
        {{ enderecoforms|crispy }}
        {{ perfilforms|crispy }}

        <button type="submit">
            Enviar
        </button>
    </form>
</div>
{% endblock %}

But I have defined a POST method on the views:

class CadastraPerfil(View):
    template_name = 'perfil/cadastra.html'

    def setup(self, *args, **kwargs):
        super().setup(*args, **kwargs)

        self.contexto = {
            'perfilforms': forms.PerfilForms(
                data=self.request.POST or None,
            ),
            'userform': forms.UsuarioForms(
                data=self.request.POST or None,
            ),
            'enderecoforms': forms.EnderecoForms(
                data=self.request.POST or None,
            ),
        }

        self.perfilforms = self.contexto['perfilforms']
        self.enderecoforms = self.contexto['enderecoforms']
        self.userform = self.contexto['userform']

        self.renderizar = render(
            self.request, self.template_name, self.contexto
        )

    def post(self, *args, **kwargs):
        # indica que há algum erro num dos formularios
        if not self.userform.is_valid() or not self.enderecoforms.is_valid() or not self.perfilforms.is_valid():
            return self.renderizar

        senha = self.userform.cleaned_data.get('senha')

        # registra um usuario
        usuario = self.userform.save(commit=False)
        usuario.set_password(senha)
        usuario.save()

        # registra um endereco
        endereco = self.enderecoforms.save(commit=False)
        endereco.save()

        # registra um perfil
        perfil = self.perfilforms.save(commit=False)
        perfil.usuario = usuario
        perfil.endereco = endereco
        perfil.save()

        self.request.session.save()
        return self.renderizar

I don't know why it is doing wrong, since I defined a POST method for the HTML document. How can I fix it?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source