Django 서버를 실행하고
브라우저에서 ip:port만 입력했는데 404 페이지가 보이는 경우가 있습니다.
겉보기엔 에러처럼 보이지만,
실제로는 아직 메인 URL을 정의하지 않았기 때문입니다.
1. Django는 어디서 URL을 찾을까?
Django는 요청이 들어오면
먼저 **프로젝트의 urls.py**를 확인합니다.
# costaurant/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('foods/', include('foods.urls')),
]
이 설정을 보면 Django는 다음 URL만 알고 있습니다.
- admin/
- foods/
2. 그럼 ip:port로 접속하면?
브라우저에서 접속한 주소는 다음과 같습니다.
http://127.0.0.1:8000/
이 URL의 경로는:
''
아무것도 없는 빈 경로(empty path) 입니다.
하지만 urls.py에는
이 빈 경로('')에 대한 처리가 없기 때문에
Django는 다음과 같은 메시지를 보여줍니다.
The empty path didn't match any of these.
3. 해결 방법: 빈 경로를 직접 처리하기
메인 페이지를 만들고 싶다면
빈 경로('')에 대한 URL 패턴을 추가하면 됩니다.
# costaurant/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('foods.urls')),
]
이렇게 하면:
- ip:port/ 요청
- foods 앱의 urls.py로 전달됨
4. 정리하면
- Django는 요청이 들어오면 project urls.py부터 확인
- ip:port/는 빈 경로('') 요청
- 빈 경로를 처리하지 않으면 404 발생
- path('', include(...))로 메인 페이지 설정 가능
메인 페이지가 404인 이유는
빈 경로('')에 대한 URL 패턴을 아직 정의하지 않았기 때문이다.
'Django 프론트& 백엔드 개발' 카테고리의 다른 글
| Django의 MVT 구조 개념 (0) | 2026.01.04 |
|---|---|
| Django Template과 render 이해하기 (0) | 2026.01.04 |
| Django에서 URL 작성할 때 알아두면 좋은 규칙들 (1) | 2026.01.03 |
| ROOT_URLCONF의 역할 (0) | 2026.01.03 |
| include()의 개념 (0) | 2026.01.03 |