7
respostas

Erro no formulário django ao gravar datetime no Mysql

Pessoal, boa noite!

Estou com este problemas há dias e não consigo resolver. Minha aplicação estava ok gravando no banco certinho e tal, mas por necessidade tive que alterar o campo que era DATE pra DATETIME e usei uma classe DateTimeInput do prórpio Python pra reproduzir o DATEPICKER, desde então eu obtenho o erro " The view core.views.cadastrar_sol didn't return an HttpResponse object. It returned None instead. " Percebi que no formulário está sendo enviado um formato de data do tipo ISO 8601 que fica assim '2020-11-24T21:18' Como consigo corrigir pra gravar com o formato DD/MM/AAAA H : M ?

7 respostas

Esse erro geralmente ocorre quando você não colocao return render() ou algo semelhante nas suas views, toda função que tem o request como parâmetro precisa do return.

Você está usando o model Form? Ou o ? Manda o trecho do código para eu ver se consigo entender melhor e te ajudar.

Raul, bom dia! Tudo funciona se eu tirar o datetime e colocar somente date, estou usando o Model Fomrs segue o meu c[odigo no GITHUB https://github.com/ugastar/hours_base caso não consiga visualizar me avisa , sou novo usuário dessa plataforma. Desde já eu agradeço!

Somos todos novatos rsrs, aprendi recentemente a usar GIT também, mas já passei por alguns sufocos rsrs

Fala Ulisses, dei uma olhada no seu form_sol e faltaram 2 coisas :

Pelo que vi faltou você indicar a rota no seu

e faltou colocar o {{forms.media}} no head.

Segue um exemplo:

Arquivo BASE.html:

    {# Include Bootstrap 4 and jQuery #}
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous" async></script>

    {# Django Tempus Dominus assets are included in `{{ form.media }}` #}
    {{ forms.media }}
</head>
<body>
    <section class="container ">
        <nav class="navbar navbar-expand-lg navbar-light bg-light">
            <a class="navbar-brand" href="{% url 'index'%}">Passagem</a>
        </nav>
        {%block content%}{% endblock %}
    </section>
</body>

Arquivo index.html:

{% extends 'base.html'%}

{% block content%}

{% load widget_tweaks %}

    <section class="container col-8">

    <form action="{% url 'minha_consulta'%}" method="POST">
        {% csrf_token %}
        {% for field in forms.visible_fields %}
        <div class="form-group">
            <label for="{{field.id_for_label}}">{{field.label}}</label>
            {{field | add_class:'form-control'}}

        </div>
        {% for error in field.errors%}
        <section class="alert-danger ">
            {{field.errors}}
        </section>
        {% endfor %}

        {% endfor %}
        <input type="submit" value="OK" class="btn btn-success mt-2">
    </form>
</section>

{% endblock %}

A princípio é isso que consigo identificar. Espero que ajude.

Obrigado pela ajuda que esta me dando Raul , tenho quebrado muito a cabeça sozinho. Então , o que acontece é o seguinte, eu esqueci de detalhar melhor o meu problema.

A classe cadastra_sol da minha view que gera o erro, se eu altero o tipo de campo no model pra DATE funciona. Essa página de consulta ainda irei implentá-la.

Outro detalhe interessante, tenho o mesmo projeto aqui no meu trabalho, aqui eu uso o banco de dados SQLITE3 e salva normalmente. Teria mais alguma ideia do que pode ser ?

Ao meu entender o Mysql não aceita esse tipo de data ISO 8601 mas não tenho ceteza.

Olá Ulisses, como vai?

Sou o Guilherme, instrutor deste treinamento e vi que o Raul te ajudou. Na plataforma, além dos alunos ajudarem uns aos outros, existe um grupo dentro da Alura chamado Apoio Educacional focado apenas no fórum e nas dúvidas da comunidade.

Para você ter uma ideia do potêncial desta equipe, um aluno perguntou sobre restaurar a senha com envio de email e a Nádia, que trabalha no Apoio Educacional focada em Python e Django respondeu e até gravou um video, como mostra esse link.

Infelizmente, por questão de tempo nós instrutores da Alura, não conseguimos responder todos os alunos, mas isso não significa que não vamos responder as suas dúvidas ou de outros alunos também.

Pensando nisso que foi criado esta equipe, para que os alunos tenham o suporte de outros alunos e nas dúvidas mais técnicas, a equipe de apoio ou instrutores.

Te desejo bons estudos e muito sucesso!

Conte sempre com a Alura.

Abraço, Guilherme Lima.

Então provavelmente o que está dando o erro é o DATE PICKER. Será que para data e hora ele precisa de algum tipo de encriptação? Como quando queremos colocar um arquivo no banco e colocamos o enctype="multipart/formadata". Mas pode ser isso também, o mysql pode não aceitar o formato, o que seria estranho. E você comentou a questão de mudar o formato da data...geralmente usa-se esse codigo que está no link, talvez ajude.

https://stackoverflow.com/questions/7737146/how-can-i-change-the-default-django-date-template-format

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