#python #flask #flask-wtforms
#python #flask #flask-wtforms
Вопрос:
Я пытаюсь отправить данные на текущий URL-адрес с помощью метода post, но «FinalForm» не проходит проверку, потому что не все поля заполнены, когда я отобразил только два поля в шаблоне из формы. Есть ли какой-либо способ преодолеть это?
#...
class MotherboardForm(FlaskForm):
chipset_model = StringField("ჩიპსეტი", validators=[DataRequired()])
socket_type = StringField("სოკეტი", validators=[DataRequired()])
ram_technology = StringField("მეხსიერების ტიპი", validators=[DataRequired()])
class RamForm(FlaskForm):
frequency = StringField("სიხშირე", validators=[DataRequired()])
size = StringField("მეხსიერების მოცულობა", validators=[DataRequired()])
class FinalForm(ItemForm, BasicsForm, CpuForm, GpuForm, MotherboardForm, RamForm):
submit = SubmitField("done")
В html я отображаю только эти поля
<form action="" method="post" novalidate>
{{ form.hidden_tag() }}
{{ form.frequency.label }}
{{ form.frequency() }}
{{ form.size.label }}
{{ form.size() }}
{{ form.submit() }}
</form>
Это функция просмотра:
@app.route("/list_item", methods=["GET", "POST"])
@login_required
def list_item():
item = FinalForm()
if item.validate_on_submit():
return redirect(url_for("list_cpu"))
return render_template("add_item.html", form=item)
Помощь была бы оценена
Ответ №1:
Если для поля задан валидатор DataRequired
, он всегда будет запрашивать ввод, отображено ли поле или нет. Можно было бы удалить DataRequired
валидатор или, если ошибка все еще возникает, использовать Optional
валидатор.
Или вы могли бы заполнить formdata фиктивным значением перед его проверкой.