[Django] NoReverseMatch 오류 해결

문지은·2023년 3월 21일
0
post-thumbnail

NoReverseMatch 오류는 Django가 설치된 앱의 URL에서 제공한 URL과 일치하는 URL 패턴을 찾을 수 없다는 의미이다.

대부분 오타 실수로 많이 일어나는 것 같다.
정말 말도 안되는 곳에서 오타 실수를 하는데 또 찾아보려고 하면 잘 보이지도 않는다.
장고 프로젝트 폴더에 있는 수많은 파일중에 오타를 어떻게 찾느냐???
에러 코드 / 에러 페이지을 보면 알 수 있다 !

  • NoReverseMatch at URL주소 : 해당 URL 주소로 접속 했을 때 오류가 발생했다는 뜻이다.
  • 예를 들어, 아래와 같은 화면에서는 /articles/1/ 로 접속 했을 때 오류가 발생한 것이다.
  • 또한, 에러 메세지 아래에 적힌 설명에서 어디서 오류가 났는지 힌트를 얻을 수 있다.
    • 위 메세지에서는 '{article'이 등록된 namespace가 아니라고 하는데,
    • 해당 URL로 연결해 놓은 템플릿 페이지를 보면, 참조 url 작성시 따옴표 안에 articles:index라고 적어야 하는 것을 중괄호로 감싸서 적은 것을 찾을 수 있다.
  • 아래처럼 수정하면 정상 작동 한다.

이 밖에도 인자가 필요한 url에 접속하는데 인자를 적어주지 않아서 NoReverseMatch가 발생한 적도 있다.

예를 들어, '/<int:pk>/'에 접속하는 url을 템플릿에 적을 때

<a href="{% url 'articles:detail' article.pk %}">DETAIL</a>

처럼 적어야 하는데 뒤에 인자를 빼놓고 아래처럼 적은 것이다.

<a href="{% url 'articles:detail'%}">DETAIL</a>

이 때도 오류가 난 페이지를 알려주고, 무슨 오류가 났는지 알려주므로 참고해서 찾아서 수정하면 된다.

하지만 최대한 오타 실수를 하지 말도록 하자.....

다시는 NoReverseMatch 창 보지 않기 ! 🤙

profile
코드로 꿈을 펼치는 개발자의 이야기, 노력과 열정이 가득한 곳 🌈

0개의 댓글