[Python] Problema com formulário django: django.db.utils.IntegrityError: NOT NULL constraint...

Discussão em 'Python' iniciado por Stack, Outubro 23, 2024.

  1. Stack

    Stack Membro Participativo

    Estou tendo um erro ao tentar cadastrar um usuário no meu BD. A tabela usuário que eu utilizo não é o usuário padrão do Django.

    Erro: Mensagem de erro

    Models:

    class Usuario(models.Model):
    nome = models.CharField(max_length=100)
    email = models.EmailField(unique=True)
    senha = models.CharField(max_length=50)
    data_criacao = models.DateTimeField(auto_now_add=True)
    admin = models.BooleanField(default=False)

    def __str__(self):
    return self.nome


    Views:

    def cadastro(request):
    if request.method == 'POST':
    form = request.POST
    if form is not None:
    if Usuario.objects.filter(email=form.get('email')).exists():
    return render(request, 'cadastro.html', {'error': 'Email already in use'})
    novo = Usuario.objects.create(nome=form.get('nome'), email=form.get('email'), senha=form.get('senha'), data_criacao=date.today(), admin=False)
    novo.save()
    return redirect('login')
    else:
    return render(request, 'cadastro.html')


    HTML

    <form method='POST' action="{% url 'cadastro' %}">
    {% csrf_token %}
    <p>Crie sua conta</p>

    <div data-mdb-input-init class="form-outline mb-4">
    <input type="text" class='form-control' id='nome' name="nome" placeholder="Nome" pattern="^[a-zA-Z][a-zA-Z-_\.]{3,20}$" required>
    <label class="form-label" for="nome">Nome</label>
    </div>

    <div data-mdb-input-init class="form-outline mb-4">
    <span class='text-danger' id='msgEmail'></span>
    <input type="email" id="email" class="form-control"
    placeholder="Email" />
    <label class="form-label" for="email">Email</label>
    </div>

    <div data-mdb-input-init class="form-outline mb-4">
    <span class='text-danger' id='mensagem'></span>
    <input type="password" id="senha" class="form-control" />
    <label class="form-label" for="senha">Senha</label>
    </div>

    <div data-mdb-input-init class="form-outline mb-4">
    <span class='text-danger' id='mensagemSenha2'></span>
    <input type="password" id="confirmSenha" class="form-control" />
    <label class="form-label" for="confirmSenha">Confirme a Senha</label>
    </div>

    <div class="text-center pt-1 mb-5 pb-1">
    <button id='botao' data-mdb-button-init data-mdb-ripple-init class="btn btn-primary btn-block fa-lg gradient-custom-2 mb-3" type="submit">Registrar</button>
    </div>



    Não consigo entender o problema exatamente. Já verifiquei via JS a variável que está sendo enviada e está tudo certo. O model também não possui a atribuição null = False. Portanto, este não seria o caso.

    Continue reading...

Compartilhe esta Página