1
resposta

Dúvida - Forms POST

Bom dia,

Uma dúvida minha, é o seguinte: Criamos o formulário para registrar os dados do usuário, onde é validado se o usuário já existe, etc.. Esse formulário é o registrar.html

Quem faz a validação dos dados é o RegistrarUsuarioForm(forms.Form) Quem faz a persistência dos dados é o RegistrarUsuarioView(View)

Correto?

Minha dúvida é: como que o registrar.html chama o RegistarUsuarioView? isso pelo o que entendi, não está explicitamente declarado.

Outra dúvida: Se quisermos cadastrar por exemplo comunidades. Criaremos o html cadastro_comunidades.html. Nesse caso, para fazer a persistencia, devemos criar um RegistrarComunidadeView(View)? Como que o Django sabe que deve chamar RegistrarComunidadeView e não RegistrarUsuarioView? Ou o ideal seria criar uma novo aplicação, onde ficaria separado?

abraços, David Silva

1 resposta

Uma das grandes vantagens e ao mesmo tempo desvantagens do Django é que ele faz muita mágica para você. Não é raro o desenvolvedor se perguntar como as coisas são feitas, justamente pelo fato do Django realizar um monte de coisa sem que o programador tenha que interferir.

Inclusive, quando um erro acontece, muitas vezes é difícil detectar porque o framework encapsula muita coisa para nós e ficarmos a mercê dele.

Agora, respondendo suas perguntas. Você esta correto em suas colocações. Agora, vamos detalhar. Vamos por parte. Vejamos esse código:


#connectedin/usuarios/urls.py

from django.conf.urls import patterns, url

from views import RegistrarUsuarioView

urlpatterns = patterns('',
    url(r'^registrar/$', RegistrarUsuarioView.as_view(), name="registrar"),
    url(r'^login/$', 'django.contrib.auth.views.login', {'template_name':'login.html'}, name='login'),
   url(r'^logout/$', 'django.contrib.auth.views.logout_then_login', {'login_url':'/login/'}, name='logout')
)

Veja que são as rotas passadas como primeiro parâmetro para a função url que indica que o RegistraUsuarioView deve ser chamado para lidar com as informações. As demais rotas para login e logout usam django.contrib.auth.. que já existe no Django prontinho para ser usado. Isso para facilitar a parte que lida com o login e o logout.

Já o RegistraUsuarioForm é usado pelo RegistraUsuarioView para validar a entrada do usuário, verificar se ele preencheu tudo direitinho. É por isso que se abrirmos RegistraUsuarioView vemos:

# código posterior omitido 

class RegistrarUsuarioView(View):

    #codigo omitido

    def post(self, request):

        #preenche o from
        form = RegistrarUsuarioForm(request.POST)

Consegui ajudar?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software