Не подключается база к анкете

darcy257895

Новичок
Пользователь
Дек 4, 2020
1
0
1
Здравствуйте! У меня есть страница с анкетой. Также у меня есть база данных для этой анкеты. Я подключаю базу данных, но ничего не происходит. Он просто возвращает на основную страницу. На этом этапе:
Код:
    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>
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Я подключаю базу данных, но ничего не происходит. Он просто возвращает на основную страницу.
Причина в том, что у вас в шаблоне отправляется пустая форма. Там 2 формы - в первую попадают пользовательские данные, а отправляется вторая.
Чтобы исправить можно просто объединить формы:
HTML:
<div class="header-h1">
    <h1>Анкета</h1>
</div>
<form action="/process" 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>
     <button type="submit" >Отправить</button>
 </form>
 

Форум IT Специалистов