Когда веб-браузер отправляет данные HTML-формы обратно на сервер, он выглядит следующим образом:
field_1=2000-01-01&field_1=Female
Данные содержат только имена полей и соответствующие им значения, поэтому сервер не может определитькакую пару имя / значение назначить какой форме, если существует несколько форм с конфликтующими именами полей.Таким образом, вам нужно использовать разные имена полей в html, чтобы сервер мог назначать правильные значения правильной форме в POST.
Однако wtforms предоставляет решение этой проблемы.Класс принимает префикс аргумент:
префикс - если указан, все поля будут иметь свои имена с префиксом и значением
Таким образом, вы можете создавать экземпляры своих форм следующим образом:
dob = Date_of_birth (префикс = 'dob') пол = Пол (префикс = 'пол')
Входной элемент HTML будет содержать префикс:
<input id="dob-field_1" name="dob-field_1" type="text" value="">
, и поэтому данные POST будут:
dob-field_1=2000-01-01&gender-field_1=Female
, а wtforms автоматически извлекут правильные значения на основе префикса :
>>> # Post data is usually in a MultiDict - a kind of dict that can have
>>> multiple values for a single key.
>>> data = MultiDict([('dob-field_1', '2000-01-01'), ('gender-field_1', 'Female')])
>>> dob = Date_of_birth(data, prefix='dob')
>>> dob.validate()
True
>>> dob.data
{'field_1': datetime.date(2000, 1, 1)}
>>> gender = Gender(data, prefix='gender')
>>> gender.validate()
True
>>> gender.data
{'field_1': 'Female'}