@@ -22,49 +22,46 @@ def get_db_connection():
2222@app .route ('/' , methods = ['GET' , 'POST' ])
2323def index ():
2424 if request .method == 'POST' :
25- url = request .form . get ( 'url' )
25+ url = request .form [ 'url' ]
2626 return redirect (url_for ('urls' , url = url ))
2727 return render_template ('index.html' )
2828
2929@app .route ('/urls' , methods = ['GET' , 'POST' ])
3030def urls ():
3131 if request .method == 'POST' :
32- url = request .form .get ('url' )
33-
34- if not validators .url (url ) or len (url ) > 255 :
35- flash ('Некорректный URL' , 'error' )
36- return redirect (url_for ('index' )), 422 # Возвращаем ошибку 422 с переадресацией на главную страницу
37-
38- domain = urlparse (url ).netloc
32+ url = request .form ['url' ]
33+ return redirect (url_for ('urls' , url = url ))
34+ else :
35+ url = request .args .get ('url' )
36+ if url :
37+ if not validators .url (url ) or len (url ) > 255 :
38+ flash ('Некорректный URL' , 'error' )
39+ return render_template ('index.html' ), 422 # Возвращаем ошибку 422 с HTML
3940
40- with get_db_connection () as conn :
41- with conn .cursor () as cur :
42- try :
43- cur .execute ('SELECT id FROM urls WHERE name = %s' , (domain ,))
44- existing_url = cur .fetchone ()
41+ domain = urlparse (url ).netloc
4542
46- if existing_url :
47- url_id = existing_url [0 ]
48- flash ('Страница уже существует' , 'error' )
49- return redirect (url_for ('url_detail' , url_id = url_id ))
43+ with get_db_connection () as conn :
44+ with conn .cursor () as cur :
45+ try :
46+ cur .execute ('SELECT id FROM urls WHERE name = %s' , (domain ,))
47+ existing_url = cur .fetchone ()
5048
51- cur . execute ( 'INSERT INTO urls (name) VALUES (%s) RETURNING id' , ( domain ,))
52- url_id = cur . fetchone () [0 ]
53- conn . commit ( )
54- flash ( 'Страница успешно добавлена' , 'success' )
49+ if existing_url :
50+ url_id = existing_url [0 ]
51+ flash ( 'Страница уже существует' , 'error' )
52+ return redirect ( url_for ( 'url_detail' , url_id = url_id ) )
5553
56- return redirect (url_for ('url_detail' , url_id = url_id ))
57- except Exception as e :
58- conn .rollback ()
59- flash (f'Произошла ошибка: { str (e )} ' , 'error' )
60- return redirect (url_for ('index' )), 500 # Возвращаем ошибку 500 с переадресацией на главную страницу
54+ cur .execute ('INSERT INTO urls (name) VALUES (%s) RETURNING id' , (domain ,))
55+ url_id = cur .fetchone ()[0 ]
56+ conn .commit ()
57+ flash ('Страница успешно добавлена' , 'success' )
6158
62- else :
63- # Обработка GET-запроса
64- url = request .args .get ('url' )
65- if url :
66- return redirect (url_for ('urls' )) # Если URL передан, просто перенаправляем на тот же маршрут
59+ return redirect (url_for ('url_detail' , url_id = url_id ))
60+ except Exception as e :
61+ conn .rollback ()
62+ flash (f'Произошла ошибка: { str (e )} ' , 'error' )
6763
64+ # Если URL не передан, или если запрос POST без URL, получаем все URL из БД
6865 with get_db_connection () as conn :
6966 with conn .cursor () as cur :
7067 cur .execute ('''
@@ -84,7 +81,6 @@ def urls():
8481
8582
8683
87-
8884@app .route ('/urls/<int:url_id>' , methods = ['GET' ])
8985def url_detail (url_id ):
9086 conn = get_db_connection ()
0 commit comments