Я создаю приложение, в котором пользователь заполняет форму и загружает файл. У меня нет проблем с сохранением данных формы запроса в базу данных или загрузкой файла.
Однако у меня возникают проблемы с получением этих данных в той же функции (request.form и загруженный файл) и отправкой по электронной почте.
Я пытался повторно использовать данные формы запроса для отправки сообщения электронной почты с объектом сеанса для сохранения файла и его прикрепления.
Это работает, только если я использую только данные формы запроса (например, мою «свяжитесь с нами»).
Вот мой код:
def trial():
if request.method == 'POST':
# Package and store new trial information
new_trial = Organization(companytype=request.form['companytype'],
companyname=request.form['companyname'],
firstname=request.form['firstname'],
lastname=request.form['lastname'],
email=request.form['email'],
username=request.form['email'],
password=request.form['password'],
referrer=request.form['referrer'])
# Package to save file
file = request.files['file']
if file and allowed_file(file.filename):
filename = file.filename
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
# Save file to Session
s.f = filename
# Send Form information in Email
msg = Message(
body="Company Name: {}\nReferrer: {}\nTrial Email: {}".format(
request.form['companyname'], request.form['referrer'], request.form['email']
),
subject="Contact regarding: {}".format(request.form['subject']),
recipients=[app.config['MAIL_USERNAME'], request.form['email']],
attachments=[s.f]
)
session.add(new_trial)
session.commit()
mail.send(msg)
return redirect(url_for('trial_success'))
else:
return render_template('signup.html')
Это должно перенаправить на страницу trial_success, но вместо этого я получаю:
Неверный запрос
Браузер (или прокси-сервер) отправил запрос, который этот сервер не может понять.
Заранее спасибо!