Как я уже упоминал в своем комментарии, объект данных представляет собой объект json, и в отличие от объектов javascript ключи должны быть строками. См. этот ref
Измените ваш объект данных на (при условии, что ваши значения являются допустимыми типами данных JSON (строка, число, объект, массив, логическое значение или ноль))
РЕДАКТИРОВАТЬ Я отвечал на этот вопрос и понял, что основная проблема может заключаться в том, что ваши данные были закодированы с помощью jquery. Если вы приведете его в соответствие, как показано ниже, он должен работать. Попробуйте на свой оригинальный код
data: JSON.stringify({
"question": question,
"answer1": answer1,
"answer2": answer2,
"answer3": answer3,
"answer4": answer4,
"answer5": answer5,
"answer6": answer6,
"congress": congress,
"session": session,
"date": date,
"lecture": lecture,
"correct": correct
}),
Хорошо, я сделаю вашу колбу немного сложнее, но по уважительной причине. Я сделаю форму wtf (вы можете сделать нормальную форму, но мне нравятся дополнительные функции wtf, такие как проверка и т. Д.)
class QuestionForm(FlaskForm):
question = StringField('question', [validators.InputRequired(message="Please enter a valid entry")])
answer1 = StringField('answer1', [validators.InputRequired(message="Please enter a valid entry")])
answer2 = StringField('answer2', [validators.InputRequired(message="Please enter a valid entry")])
answer3 = StringField('answer3', [validators.InputRequired(message="Please enter a valid entry")])
answer4 = StringField('answer4', [validators.InputRequired(message="Please enter a valid entry")])
answer5 = StringField('answer5', [validators.InputRequired(message="Please enter a valid entry")])
answer6 = StringField('answer6', [validators.InputRequired(message="Please enter a valid entry")])
congress = StringField('congress', [validators.InputRequired(message="Please enter a valid entry")])
session = StringField('session', [validators.InputRequired(message="Please enter a valid entry")])
date = StringField('date', [validators.InputRequired(message="Please enter a valid entry")])
lecture = StringField('lecture', [validators.InputRequired(message="Please enter a valid entry")])
correct = StringField('correct', [validators.InputRequired(message="Please enter a valid entry")])
Обязательно выполните релевантный импорт, если вы используете wtf
from flask_wtf import FlaskForm
from wtforms import Form, BooleanField, StringField, IntegerField, validators, SelectField, TextAreaField, HiddenField
Затем я буду использовать werkzeug.datastructures для доступа к данным json (я начну с импорта, импортирую также и форму, если она находится в другом файле from forms import QuestionForm
), а затем получу доступ ко всем значениям формы. Я возвращаю все значения в строке, просто чтобы быть уверенным, что я их получаю, уверен, что вы узнаете, как оттуда сохранить в вашу базу данных
from werkzeug.datastructures import MultiDict
@app.route('/create', methods=['POST'])
def cre():
form_data = MultiDict(mapping=request.json)
form = QuestionForm(form_data)
if request.is_json:
question= form.question.data
answer1= form.answer1.data
answer2= form.answer2.data
answer3= form.answer3.data
answer4= form.answer4.data
answer5= form.answer5.data
answer6= form.answer6.data
congress= form.congress.data
ssession= form.session.data
date= form.date.data
lecture= form.lecture.data
correct= form.correct.data
return str(question+' '+answer1+' '+answer2+' '+answer3+' '+answer4+' '+answer5+' '+answer6+' '+congress+' '+ssession+' '+date+' '+lecture+' '+correct)
Вы можете добавить if form.validate_on_submit():
после if request.is_json:
, если хотите проверить данные в соответствии с валидаторами, указанными в форме
Я могу получить ответ со всеми значениями, которые я ввел в свой объект json. Я уверен, что если вы найдете этот пример, который может работать для вас, вы сможете отлаживать его оттуда (я использовал ssession, потому что в моем приложении для тестирования у меня уже определен сеанс)