Как записать результаты анкеты в базу данных?
К анкете присоединена база данных. В нее должны отправляться резьтаты опроса. Но почему-то ничего не записывается. Только добавляется id человека, но не его ответы.
Анкета:
<h1>Анкета</h1>
</div>
<form action="/" method = 'GET'>
<fieldset>
<legend><b>Опрос про стресс и здоровье</b></legend>
Пол<br />
<input type="radio" name="gender" value="Мужской" checked /> М<br />
<input type="radio" name="gender" value="Женский" /> Ж<br />
Возраст<br />
<input type="text" name="age" size="3"><br />
1.Мне тяжело чувствовать себя расслабленным ?<br>
<input type="radio" name="ask" value="almost_always" checked>Почти всегда<br>
<input type="radio" name="ask" value="most_of_the_time">Большую часть времени<br>
<input type="radio" name="ask" value="some_of_the_time">Некоторое время<br>
<input type="radio" name="ask" value="almost_never">Почти никогда<br>
<input type="radio" name="ask" value="never">Никогда<br>
2.Вы чувствуете, что у вас здоровый баланс между работой и жизнью или учебой и жизнью?<br>
<input type="radio" name="ask2" value="yes" checked>Да<br>
<input type="radio" name="ask2" value="no">Нет<br>
3.Где вы чаще испытываете стресс?<br>
<input type="radio" name="ask3" value="home" checked>Дома<br>
<input type="radio" name="ask3" value="work">На работе<br>
<input type="radio" name="ask3" value="education">На учебе<br>
4.Когда вы испытываете стресс?<br>
<input type="radio" name="ask4" value="exam" checked>Перед экзаменом или контрольной<br>
<input type="radio" name="ask4" value="report">Перед важным отчетом<br>
<input type="radio" name="ask4" value="at_work">Каждый день на работе<br>
<input type="radio" name="ask4" value="at_uni">Каждый день на учебе<br>
5.Есть ли у вас вредные привычки?<br>
<input type="radio" name="ask5" value="yes" checked>Да<br>
<input type="radio" name="ask5" value="no">Нет<br>
6.Повлияло ли стрессовое состояние на появление вредных привычек?<br>
<input type="radio" name="ask6" value="yes" checked>Да<br>
<input type="radio" name="ask6" value="no">Нет<br>
</fieldset>
</form>
Flask через который запускаю
@app.route('/')
def index():
return render_template("index.html")
@app.route('/survey', methods=['get'])
def question_page():
questions = Questions.query.all()
return render_template(
'questinnaire.html',
questions=questions
)
@app.route('/process', methods=['get'])
def survey():
if not request.args:
return redirect(url_for('index'))
gender = request.args.get('gender')
age = request.args.get('age')
user = User(
gender=gender,
age=age
)
db.session.add(user)
db.session.commit()
db.session.refresh(user)
ask = request.args.get('ask')
ask2 = request.args.get('ask2')
ask3 = request.args.get('ask3')
ask4 = request.args.get('ask4')
ask5 = request.args.get('ask5')
ask6 = request.args.get('ask6')
answer = Result(answers_id=user.person_id, ask=ask, ask2=ask2, ask3=ask3, ask4=ask4, ask5=ask5, ask6=ask6)
db.session.add(answer)
db.session.commit()
return 'Ok'
Описание базы
class Questions(db.Model):
__tablename__="questions"
question_id = db.Column('question_id', db.Integer, primary_key=True)
questions = db.Column('questions', db.Text)
class Result(db.Model):
__tablename__="answers"
answers_id = db.Column('answers_id', db.Integer, primary_key=True)
ask = db.Column(db.Text)
ask2 = db.Column(db.Text)
ask3 = db.Column(db.Text)
ask4 = db.Column(db.Text)
ask5 = db.Column(db.Text)
ask6 = db.Column(db.Text)
class User(db.Model):
__tablename__="user"
#id = db.relationship('Result', uselist=False, primaryjoin="User.person_id==Result.answers_id")
person_id = db.Column('person_id', db.Integer, primary_key=True)
gender = db.Column('gender', db.Text)
age = db.Column('age', db.Integer)
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Попробуйте заменить
<form action="/" method = 'GET'>
На
<form action="/process" method = 'POST'>
И
@app.route('/process', methods=['get'])
На
@app.route('/process', methods=['post'])
И замените request.args на request.form