@@ -25,24 +25,39 @@ def index():
2525 if request .method == 'POST' :
2626 url = request .form ['url' ]
2727 if not validators .url (url ) or len (url ) > 255 :
28- flash ('Неверный URL-адрес! ' , 'error' )
28+ flash ('Некорректный URL' , 'error' )
2929 return redirect (url_for ('index' ))
3030
3131 conn = get_db_connection ()
3232 cur = conn .cursor ()
3333 try :
34+ # Проверяем, существует ли уже этот URL
35+ cur .execute ('SELECT id FROM urls WHERE name = %s' , (url ,))
36+ existing_url = cur .fetchone ()
37+
38+ if existing_url :
39+ # Если URL уже существует, перенаправляем на его детали
40+ url_id = existing_url [0 ]
41+ flash ('Страница уже существует' , 'error' )
42+ return redirect (url_for ('url_detail' , url_id = url_id ))
43+
44+ # Если URL не существует, добавляем его
3445 cur .execute ('INSERT INTO urls (name) VALUES (%s)' , (url ,))
3546 conn .commit ()
3647 flash ('Страница успешно добавлена' , 'success' )
37- except psycopg2 .IntegrityError :
48+
49+ # Получаем ID добавленного URL для перенаправления
50+ cur .execute ('SELECT id FROM urls WHERE name = %s' , (url ,))
51+ url_id = cur .fetchone ()[0 ]
52+
53+ return redirect (url_for ('url_detail' , url_id = url_id ))
54+ except Exception as e :
3855 conn .rollback ()
39- flash ('Этот URL уже существует! ' , 'error' )
56+ flash (f'Произошла ошибка: { str ( e ) } ' , 'error' )
4057 finally :
4158 cur .close ()
4259 conn .close ()
4360
44- return redirect (url_for ('index' ))
45-
4661 return render_template ('index.html' )
4762
4863
0 commit comments