Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro ao registrar um novo usuário

Estou tentando registrar um novo usuário. Já revisei o código todo algumas vezes, mas estou sempre recebendo o erro abaixo:

TypeError at /registrar/
'email' is an invalid keyword argument for this function
Request Method:    POST
Request URL:    http://localhost:8000/registrar/
Django Version:    1.10.3
Exception Type:    TypeError
Exception Value:    
'email' is an invalid keyword argument for this function
Exception Location:    /usr/local/lib/python2.7/dist-packages/django/db/models/base.py in __init__, line 555
Python Executable:    /usr/bin/python
Python Version:    2.7.12
Python Path:    
['/home/josue/projetos/django_alura/connectedin',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/usr/lib/python2.7/lib-old',
 '/usr/lib/python2.7/lib-dynload',
 '/home/josue/.local/lib/python2.7/site-packages',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages/PILcompat']
Server time:    Tue, 15 Nov 2016 14:15:20 +0000

O usuário está sendo cadastrado no banco. Verifiquei isso consultando pelo shell e também ao tentar cadastrar o mesmo usuário. Sei que a recomendação era pra rodar o projeto no Django 1.7 e estou na versão 1.10 mas pelo erro que estou recebendo ("'email' is an invalid keyword argument for this function"), acho que não tem nada a ver com a versão do framework.

Alguém pode me ajudar?

2 respostas

Olha, eu não manjo de python, mas vou me arriscar aqui... Parece que vc tem alguma função que recebe um email, mas o nome do parametro parece que não é email.. como vc ta tentando usar os parâmetros nomeados, ele ta reclamando.

solução!

Tudo Bem Josué? verifique se em "usuarios/views.py" na classe "RegistrarUsuarioView " a função que define o post contém o trecho de código:

#cria o perfil
perfil = Perfil(
            nome=dados_form['nome'],
            email=dados_form['email'], #aqui está o problema
            telefone=dados_form['telefone'],
            nome_empresa=dados_form['nome_empresa'],
            usuario=usuario)

No meu caso tive que remover a atribuição do email

email=dados_form['email'],

pois se lembramos da aula o emai já é definido em "usuario", com isso estava ocorrendo um conflito. Com o código abaixo funcionou:

#cria o perfil
perfil = Perfil(
            nome=dados_form['nome'],
            telefone=dados_form['telefone'],
            nome_empresa=dados_form['nome_empresa'],
            usuario=usuario)

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