@@ -22,17 +22,19 @@ def get_db_connection():
2222@app .route ('/' , methods = ['GET' , 'POST' ])
2323def index ():
2424 if request .method == 'POST' :
25- url = request .form [ 'url' ]
25+ url = request .form . get ( '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 ['url' ]
32+ url = request .form .get ('url' )
33+
34+ # Проверка валидности URL
3335 if not validators .url (url ) or len (url ) > 255 :
3436 flash ('Некорректный URL' , 'error' )
35- return render_template ( 'index.html' ) , 422 # Возвращаем ошибку 422 с HTML
37+ return redirect ( url_for ( 'index' )) , 422 # Возвращаем ошибку 422 с переадресацией на главную страницу
3638
3739 domain = urlparse (url ).netloc
3840
@@ -56,36 +58,13 @@ def urls():
5658 except Exception as e :
5759 conn .rollback ()
5860 flash (f'Произошла ошибка: { str (e )} ' , 'error' )
61+ return redirect (url_for ('index' )), 500 # Возвращаем ошибку 500 с переадресацией на главную страницу
5962
6063 else :
64+ # Обработка GET-запроса
6165 url = request .args .get ('url' )
6266 if url :
63- if not validators .url (url ) or len (url ) > 255 :
64- flash ('Некорректный URL' , 'error' )
65- return render_template ('index.html' ), 422 # Возвращаем ошибку 422 с HTML
66-
67- domain = urlparse (url ).netloc
68-
69- with get_db_connection () as conn :
70- with conn .cursor () as cur :
71- try :
72- cur .execute ('SELECT id FROM urls WHERE name = %s' , (domain ,))
73- existing_url = cur .fetchone ()
74-
75- if existing_url :
76- url_id = existing_url [0 ]
77- flash ('Страница уже существует' , 'error' )
78- return redirect (url_for ('url_detail' , url_id = url_id ))
79-
80- cur .execute ('INSERT INTO urls (name) VALUES (%s) RETURNING id' , (domain ,))
81- url_id = cur .fetchone ()[0 ]
82- conn .commit ()
83- flash ('Страница успешно добавлена' , 'success' )
84-
85- return redirect (url_for ('url_detail' , url_id = url_id ))
86- except Exception as e :
87- conn .rollback ()
88- flash (f'Произошла ошибка: { str (e )} ' , 'error' )
67+ return redirect (url_for ('urls' )) # Если URL передан, просто перенаправляем на тот же маршрут
8968
9069 with get_db_connection () as conn :
9170 with conn .cursor () as cur :
@@ -105,6 +84,8 @@ def urls():
10584 return render_template ('urls.html' , urls = urls )
10685
10786
87+
88+
10889@app .route ('/urls/<int:url_id>' , methods = ['GET' ])
10990def url_detail (url_id ):
11091 conn = get_db_connection ()
0 commit comments