Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Mensagem de erro não aparece.

Olá, a mensagem de erro criado no forms.py não está aparecendo no site, podem me ajudar?

forms.py:

from django import forms
from tempus_dominus.widgets import DatePicker# classe para exibir um calendário no campo do form
from datetime import datetime
from passagens.classe_viagem import tipos_de_classe

class PassagemForms(forms.Form):
    origem = forms.CharField(label='Origem', max_length=100)
    destino = forms.CharField(label='Destino', max_length=100)
    data_ida = forms.DateField(label='Data de Ida', widget=DatePicker())
    data_volta = forms.DateField(label='Data de Volta', widget=DatePicker())
    data_pesquisa = forms.DateField(label='Data da Pesquisa', disabled=True, initial=datetime.today)
    classe_viagem = forms.ChoiceField(label='Classe da Viagem', choices=tipos_de_classe)
    informacoes = forms.CharField(
        label='Informações extras',
        max_length=200,
        widget=forms.Textarea(),
        required=False
    )
    email = forms.EmailField(label='Email', max_length=150)

def clean_origem(self):
    origem = self.cleaned_data.get('origem') # caso vazio retorna None
    if any(char.isdigit() for char in origem):
        raise forms.ValidationError('Origem inválida: Não inclua números')
    else:
        return origem

views.py:

from django.shortcuts import render
from passagens.forms import PassagemForms
# Create your views here.

def index(request):
    form = PassagemForms()
    contexto = {'form': form}
    return render(request, 'index.html', contexto)

def revisao_consulta(request):
    if request.method == 'POST':
        form = PassagemForms(request.POST)

        if form.is_valid():
            contexto = {'form': form}
            return render(request, 'minha_consulta.html', contexto)
        else:
            print('Form inválido')
            contexto = {'form': form}
            return render(request, 'index.html', contexto)

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 form.visible_fields %}
        <div class="form-group">
            <label for="{{ field.id_for_label }}">{{field.label}}</label>
            {{field|add_class:'form-control'}}<!--passando uma classe html para editar o seu formato-->
        </div>
        {% for erro in filed.errors %}
        <section class="alert alert-danger" role="alert">
            {{ filed.errors }}
        </section>
        {% endfor %}
        {% endfor %}
        <input type="submit" value="Ok" class="btn btn-success">
    </form>
</section>

{% endblock %}

Ao aperta em Ok sou redirecionado para a página minha_consulta.html, onde números são exibidos em origem. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Encontrei o erro, havia lugares onde field estava digitado errado e em forms.py a endentação da funções estava fora da classe.