nextel
@nextel
ненавижу javascript

Как забрать filefild c формы wtforms flask?

Здравствуйте, есть форма
class Reg(Form):
    foto = FileField('Фото')
    send = SubmitField('Регистрация')

ест коньтроллер
@applic.route('/', methods=['GET','POST'])
def main():
    form = Reg(request.form)
    if request.method == 'POST' and form.validate():
        print(form.data)
        print(form.errors)
       
        print(form.validate())
    return render_template('index.html', form = form)

вот если мы делаем просто
form = Reg()
то данные с формы приходят а если добавить аргументом request.form при создании экземпляра то нет. почему?
если написать
print(form.data)
то без аргументов то есть вот так form = Reg() приходит обьект файла а с аргементом request.form то вот так form = Reg(request.form) приходят пучстые ковычки,
если написать print(form.validate()) показывает false

вот форма
<form action="" method="post" enctype="multipart/form-data">
				<div class="col-lg-5 col-lg-offset-4">
                            {{ form.foto }}
                            {{form.csrf_token  }}
                            {{ form.send( class ='form-control')}}
                    </div>
            </form>


Как сделать чтоб нормально все было?
  • Вопрос задан
  • 550 просмотров
Решения вопроса 1
@xzfallen
Актуально нет?
Не понятно, просто форма для валидации будет использована или все таки будет работа с бд через orm?
Если правильно вас понимаю, то вам вообще не нужен request.form. Делайте форму модельной в классе формы
class Reg(ModelForm(ИМПОРТИРОВАННЫЙ_КЛАСС_ИЗ_МОДЕЛЕЙ_ДБ)):
тут если хотите переопределяйте ваши поля.

на вьюхе:
# получаете объект бд
test123= reg()
# инициализируйте форму
form = Reg(obj = test123)
# Лучше так, т.к. короче чем if request.method == 'POST' and form.validate():
if form.validate_on_submit():
form.populate_obj(test123)
# и тут просто уже сразу комитим
db.session.commit()
return render_template('index.html', form = form)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
JRazor
@JRazor
Senior StarkOverFlow Programmer
А зачем вы ставите Request.form, собственно? Он тут не нужен.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы