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.