'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 |
|---|
