11from flask import Flask , session , request , redirect , url_for
22from db_scripts import get_question_after , get_quises
3-
3+
44def start_quis (quiz_id ):
5- ''' создаёт нужные значения в словаре session'''
5+ """ создаёт нужные значения в словаре session"""
66 session ['quiz' ] = quiz_id
77 session ['last_question' ] = 0
8-
8+
99def end_quiz ():
1010 session .clear ()
11-
12- def quiz_form ():
13- ''' функция получает список викторин из базы и формирует форму с выпадающим списком'''
14- html_beg = '''<html><body><h2>Выберите викторину:</h2><form method="post" action="index"><select name="quiz">'''
15- frm_submit = '''<p><input type="submit" value="Выбрать"> </p>'''
1611
17-
18- html_end = '''</select>''' + frm_submit + '''</form></body></html>'''
19- options = ''' '''
12+ def quiz_form ():
13+ """функция получает список викторин из базы и формирует форму с выпадающим списком"""
14+ html_beg = (
15+ '<html><body><h2>Выберите викторину:</h2>'
16+ '<form method="post" action="index"><select name="quiz">'
17+ )
18+ frm_submit = '<p><input type="submit" value="Выбрать"> </p>'
19+ html_end = '</select>' + frm_submit + '</form></body></html>'
20+ options = ''
2021 q_list = get_quises ()
2122 for id , name in q_list :
22- option_line = ('''<option value="''' +
23- str (id ) + '''">''' +
24- str (name ) + '''</option>
25- ''' )
26- options = options + option_line
23+ option_line = f'<option value="{ id } ">{ name } </option>\n '
24+ options += option_line
2725 return html_beg + options + html_end
28-
26+
2927def index ():
30- ''' Первая страница: если пришли запросом GET, то выбрать викторину,
31- если POST - то запомнить id викторины и отправлять на вопросы'''
28+ """ Первая страница: если пришли запросом GET, то выбрать викторину,
29+ если POST - то запомнить id викторины и отправлять на вопросы"""
3230 if request .method == 'GET' :
33- # викторина не выбрана, сбрасываем id викторины и показываем форму выбора
3431 start_quis (- 1 )
3532 return quiz_form ()
3633 else :
37- # получили дополнительные данные в запросе! Используем их:
38- quest_id = request .form .get ('quiz' ) # выбранный номер викторины
34+ quest_id = request .form .get ('quiz' ) # выбранный номер викторины
3935 start_quis (quest_id )
4036 return redirect (url_for ('test' ))
41-
37+
4238def test ():
43- '''возвращает страницу вопроса'''
44- # что если пользователь без выбора викторины пошел сразу на адрес '/test'?
45- if not ('quiz' in session ) or int (session ['quiz' ]) < 0 :
39+ """возвращает страницу вопроса"""
40+ if 'quiz' not in session or int (session ['quiz' ]) < 0 :
4641 return redirect (url_for ('index' ))
47- else :
48- # тут пока старая версия функции:
49- result = get_question_after (session ['last_question' ], session ['quiz' ])
50- if result is None or len (result ) == 0 :
51- return redirect (url_for ('result' ))
52- else :
53- session ['last_question' ] = result [0 ]
54- # если мы научили базу возвращать Row или dict, то надо писать не result[0], а result['id']
55- return '<h1>' + str (session ['quiz' ]) + '<br>' + str (result ) + '</h1>'
56-
42+ result = get_question_after (session ['last_question' ], session ['quiz' ])
43+ if result is None or len (result ) == 0 :
44+ return redirect (url_for ('result' ))
45+ session ['last_question' ] = result [0 ]
46+ return f'<h1>{ session ["quiz" ]} <br>{ result } </h1>'
47+
5748def result ():
5849 end_quiz ()
5950 return "that's all folks!"
60-
61- # Создаём объект веб-приложения:
62- app = Flask (__name__ )
63- app .add_url_rule ('/' , 'index' , index ) # создаёт правило для URL '/'
64- app .add_url_rule ('/index' , 'index' , index , methods = ['post' , 'get' ]) # правило для '/index'
65- app .add_url_rule ('/test' , 'test' , test ) # создаёт правило для URL '/test'
66- app .add_url_rule ('/result' , 'result' , result ) # создаёт правило для URL '/test'
67- # Устанавливаем ключ шифрования:
51+
52+ app = Flask (__name__ )
53+ app .add_url_rule ('/' , 'index' , index )
54+ app .add_url_rule ('/index' , 'index' , index , methods = ['POST' , 'GET' ])
55+ app .add_url_rule ('/test' , 'test' , test )
56+ app .add_url_rule ('/result' , 'result' , result )
6857app .config ['SECRET_KEY' ] = 'ThisIsSecretSecretSecretLife'
69-
58+
7059if __name__ == "__main__" :
71- # Запускаем веб-сервер:
7260 app .run ()
0 commit comments