Здравствуйте! У меня есть страница с анкетой. Также у меня есть база данных для этой анкеты. Я подключаю базу данных, но ничего не происходит. Он просто возвращает на основную страницу. На этом этапе:
Код:
def survey():
if not request.args:
return redirect(url_for('index'))
Код:
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import ForeignKey, PrimaryKeyConstraint
from sqlalchemy.orm import relationship
db = SQLAlchemy()
class Question(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('title_id', db.Integer, ForeignKey('person.person_id'), 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 Data(db.Model):
__tablename__="person"
id = db.relationship('Result', uselist=False, primaryjoin="Data.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)
И код моих страниц:
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///anketa_result.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.app = app
db.init_app(app)
@app.route('/')
def index():
return render_template("index.html")
@app.route('/survey', methods=['get'])
def question_page():
questions = Question.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 = Data(
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(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'
@app.route('/rating')
def rating():
return render_template("static.html")
Код страницы с анкетой
<div class="header-h1">
<h1>Анкета</h1>
</div>
<form action="/" method = 'GET'>
<fieldset>
<legend><b>Опрос про стресс и здоровье</b></legend>
Пол<br />
<input type="radio" name="gender" value="Мужской" /> М<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">Почти всегда<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">Да<br>
<input type="radio" name="ask2" value="no">Нет<br>
3.Где вы чаще испытываете стресс?<br>
<input type="radio" name="ask3" value="home" >Дома<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" >Перед экзаменом или контрольной<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">Да<br>
<input type="radio" name="ask5" value="no">Нет<br>
6.Повлияло ли стрессовое состояние на появление вредных привычек?<br>
<input type="radio" name="ask6" value="yes">Да<br>
<input type="radio" name="ask6" value="no">Нет<br>
</fieldset>
</form>
<form action="/process" method="GET">
<button type="submit" >Отправить</button>
</form>