문제 발생 원인
- URL 패턴 충돌
- Django의 URL 라우팅 시스템은 urlpatterns 리스트를 순차적으로 검사함.단축 URL 패턴이 다른 URL 패턴과 충돌하면 Django가 올바른 뷰를 찾지 못하고 404 오류 발생함.예를 들어, webtools/ 경로 아래에 있는 URL 패턴이 먼저 검사되고, 그 이후에 단축 URL 패턴이 검사됨.그 결과, 단축 URL이 올바르게 처리되지 않음.
- URL 패턴의 위치
- 단축 URL 패턴이 다른 URL 패턴보다 먼저 정의되어야 했음.그렇지 않으면 Django가 다른 URL 패턴을 먼저 매칭시키고, 단축 URL 패턴을 무시하게 됨.
해결 방법
- URL 패턴 재배치
- urls.py에서 단축 URL 패턴을 urlpatterns 리스트의 마지막에 추가함.
- 이렇게 하면 Django가 요청된 URL을 검사할 때, 다른 URL 패턴과 충돌하지 않고 단축 URL 패턴을 올바르게 인식할 수 있음.
path('<str:short_code>/', redirect_short_url, name='redirect_short_url')
- 위 패턴을 urlpatterns의 마지막에 배치하여 모든 다른 URL 패턴이 먼저 검사된 후 단축 URL 패턴이 검사되도록 설정함.
- 도메인 및 단축 코드 처리
- views.py에서 단축 URL을 생성할 때 도메인과 단축 코드를 조합하여 URL을 생성하도록 수정함.마지막 슬래시 제거하여 URL을 더 깔끔하게 만듦.
최종 결과
- 이제 단축 URL이 정상적으로 작동함.사용자가 입력한 원본 URL에 대한 단축 URL을 클릭하면 올바른 페이지로 리다이렉트됨.단축 URL을 통해 쉽게 원본 URL에 접근 가능해졌으며, 시스템 안정성과 사용자 경험이 향상됨.끝.