Форум сайта python.su
А правильно я понимаю, что после успешной отправки формы form.validate_on_submit или после request.method == POST flask опять их перезаполняет, значениями, которые были отправлены?
Офлайн
Допустим есть урл /submit/ и для неё определен вью:
def index(): form = Form() if form.validate_on_submit(): do_something() return render_template('add.html', form=form)
def index(): #request.form передается по дефолту, но я укажу его явно для наглядности form = Form(formdata=request.form) # Примерно такой код находится в validate_on_submit if request.method = "POST" and form.validate(): do_something() return render_template('add.html', form=form)
Отредактировано plusplus (Май 16, 2016 14:27:16)
Офлайн
plusplus
Т.е. если отправляю форму и хочу прибавить единицу после успешной отправки в одном из полей я могу сделать так:
def freeform(): form = FreeForm() n = request.args.get("n") if n == None: if form.validate_on_submit(): a = form.nomer1.data flash("Отправили %s и прибавили единицу в форму" % (a)) a += 1 return redirect ("/freeform?n="+str(a)) else: flash_errors(form) else: form.nomer1.data = int(n) if form.validate_on_submit(): a = form.nomer1.data flash("Отправили %s и прибавили единицу в форму" % (a)) a += 1 return redirect ("/freeform?n="+str(a)) else: flash_errors(form) return render_template ("/freeform/fform.html", form = form)
Отредактировано boligolov (Май 16, 2016 19:44:58)
Офлайн
фигня получилась…
когда по GET приходишь, изменяешь значение поля, то шлет значение по-которому пришел…
Офлайн
boligolov
plusplusТ.е. если отправляю форму и хочу прибавить единицу после успешной отправки в одном из полей я могу сделать так:
def index(): form = Form() if form.validate_on_submit(): form.field.data += 1 do_something() return render_template('add.html', form=form)
Офлайн