Мои валидаторы не видят ошибок. Я могу указать имя в поле состояния, которое составляет 20 символов или ничего не вводить, и применимый валидатор WTForm пропускает его и отправляет его в ORM. Я хочу, чтобы он поймал ошибки проверки перед отправкой в базу данных, где он выбрасывает NOT NULL ошибки и т. Д. Мне нужно заставить пользователя исправить плохие входы перед отправкой их в базу данных. Что я делаю не так?Валидаторы не обнаруживают ошибок
forms.py:
class ShelterForm(Form):
name = StringField('Name',
[validators.InputRequired(),
validators.Length(
max=50,
message="Limit 50 characters, please try again.")])
address = StringField('Address',
[validators.InputRequired(),
validators.Length(
max=30,
message="Limit 30 characters, please try again.")])
city = StringField('City',
[validators.InputRequired(),
validators.Length(
max=20,
message="Limit 20 characters, please try again.")])
state = StringField('State',
[validators.InputRequired(),
validators.Length(
max=13,
message="Limit 13 characters, please try again.")])
zipCode = IntegerField('zipCode',
[validators.InputRequired(),
validators.Length(
max=10,
message="xxxxx or xxxxx-xxxx")])
website = StringField('Website',
[validators.InputRequired()])
maximum_capacity = IntegerField('maximum_capacity',
[validators.InputRequired()])
views.py
from PuppyShelter import app
from PuppyShelter import models
from PuppyShelter import forms
from flask import render_template, url_for, request, redirect, flash, jsonify
@app.route('/shelters/shelternew', methods = ['GET','POST'])
def shelterNew():
form = forms.ShelterForm()
if request.method == "POST":
new_shelter = {
'name': form.name.data,
'address': form.address.data,
'city': form.city.data,
'state': form.state.data,
'zipCode': form.zipCode.data,
'website': form.website.data,
'maximum_capacity': form.maximum_capacity.data}
models.createShelter(new_shelter)
flash('A new shelter has been opened!')
return redirect(url_for('shelters'))
else:
return render_template('shelterNew.html', form = form)
shelterNew.py
<!DOCTYPE html>
<html lang="en">
<head>
<link rel=stylesheet type=text/css href="{{url_for('static', filename='bootstrap.css') }}"
</head>
<body>
<div>
<legend>New Shelter</legend>
<form method ='POST' actions='/shelterNew' enctype="multipart/form-data">
{{ form.csrf_token }}
<div class="form-group col-xs-4">
<label for="shelter-name">Name</label>
{{ form.name(class="form-control", placeholder="Name") }}
{% if form.name.errors %}
<div class="alert alert-info" role="alert">
{% for error in form.name.errors %}
{{ error }}
{% endfor %}
</div>
{% endif %}
</div>
<div class="form-group col-xs-6">
<label for="shelter-address">Address</label>
{{ form.address(class="form-control", placeholder="Address") }}
{% if form.address.errors %}
<div class="alert alert-info" role="alert">
{% for error in form.address.errors %}
{{ error }}
{% endfor %}
</div>
{% endif %}
</div>
<div class="form-group col-xs-4">
<label for="shelter-city">City</label>
{{ form.city(class="form-control", placeholder="City") }}
{% if form.city.errors %}
<div class="alert alert-info" role="alert">
{% for error in form.city.errors %}
{{ error }}
{% endfor %}
</div>
{% endif %}
</div>
<div class="form-group col-xs-4">
<label for="shelter-state">State</label>
{{ form.state(class="form-control", placeholder="State") }}
{% if form.state.errors %}
<div class="alert alert-info" role="alert">
{% for error in form.state.errors %}
{{ error }}
{% endfor %}
</div>
{% endif %}
</div>
<div class="form-group col-xs-3">
<label for="shelter-zipCode"></label>
{{ form.zipCode(class="form-control", placeholder="Zip") }}
{% if form.zipCode.errors %}
<div class="alert alert-info" role="alert">
{% for error in form.zipCode.errors %}
{{ error }}
{% endfor %}
</div>
{% endif %}
</div>
<div class="form-group col-xs-12">
<label for="shelter-website">Website</label>
{{ form.website(class="form-control", placeholder="enter url here") }}
{% if form.website.errors %}
<div class="alert alert-info" role="alert">
{% for error in form.website.errors %}
{{ error }}
{% endfor %}
</div>
{% endif %}
</div>
<div class="form-group col-xs-4">
<label for="shelter-maximum_capacity">Maximum Capacity</label>
{{ form.maximum_capacity(class="form-control", placeholder="Maximum Capacity") }}
{% if form.maximum_capacity.errors %}
<div class="alert alert-info" role="alert">
{% for error in form.maximum_capacity.errors %}
{{ error }}
{% endfor %}
</div>
{% endif %}
</div>
</br>
<div>
<input class="btn btn-success" type='submit' value='Create'>
<input class="btn btn-warning" type='reset' value='Reset'>
</div></br>
</form>
</br></br>
<a href='{{url_for('shelters')}}'class="btn btn-success btn-lg active" role="button"> Shelters.</a>
<a href='{{url_for('puppies')}}'class="btn btn-success btn-lg active" role="button"> Puppies.</a>
<a href='{{url_for('owners')}}'class="btn btn-success btn-lg active" role="button"> Owners.</a>
</div>
</body>
</html>