인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

임찬님의 프로필 이미지

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)

NoReverseMatch at /hottrack/archives/2023/

작성

·

38

0

NoReverseMatch 자체가 되돌아갈 곳이 없다는 오류인 것은 알겠으나,
왜 song_archive_year를 못찾는지 모르겠습니다.

image.png

 

View

class SongYearArchiveView(YearArchiveView):
    model=Song
    date_field="release_date"
    # make_object_list = True

urls.py

urlpatterns = [
    ...
    path(route="archives/<int:year>/", view=views.SongYearArchiveView.as_view(), name="song_archive_year"),
]



--- 혹시나 해서 View를 다음과 같이 했는데

class SongYearArchiveView(YearArchiveView):
    model = Song
    date_field = "release_date"  # 조회할 날짜 필드
    make_object_list = True

    def get_queryset(self):
        year = self.kwargs['year']  # URL에서 'year' 값을 가져옴
        return Song.objects.filter(release_date__year=year)

 

image.png

 

인지는 하는 것 같아요. 그런데 버튼은 없군요.

답변 2

0

임찬님의 프로필 이미지
임찬
질문자

from django.urls import path, re_path
from . import converters
from . import views

# app_name = "hottrack"


app_name 이 설정되어 있으면 리버스 매치에 각각 설정해야하는걸 꺠달았네요...

허헣...

이진석님의 프로필 이미지
이진석
지식공유자

답변이 늦었습니다.

말씀하신 대로 urlpatterns가 정의된 곳에 app_name 이 설정되어있다면, 이는 namespace로서 사용이 되구요. URL Reverse 시에는 반드시 같이 지정해주셔야 합니다.

잘 찾아주셨습니다. 👍

화이팅입니다. ;-)

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

임찬님께서 겪고 계신 NoReverseMatch 오류는 Django에서 URL을 역으로 찾을 수 없다는 것을 의미합니다. 즉, 템플릿이나 뷰에서 지정한 URL의 name과 실제 URLconf에 정의된 name이 일치하지 않거나, URLconf에 해당 이름이 없는 경우 발생할 수 있습니다. 임찬님의 경우, ‘song_archive_year’라는 이름을 가진 URL을 찾지 못하고 있는 상황으로 보입니다.

  1. URLconf 확인: 임찬님의 urls.py 에서는 path(route="archives/<int:year>/", view=views.SongYearArchiveView.as_view(), name="song_archive_year")와 같이 정의되어 있어, 이는 올바르게 설정되어 보입니다. 이 설정으로 song_archive_year 이름을 사용하여 URL을 역으로 출력할 수 있습니다.

  2. 템플릿 확인: 템플릿 파일에서 {% url 'song_archive_year' year=2023 %}와 같은 형식으로 URL 태그를 사용하여야 합니다. 만약 변수를 사용할 경우, 해당 변수가 템플릿 컨텍스트 내에 있는지 확인해야 합니다.

  3. 변수 전달: 임찬님께서 이미 get_queryset에서 year 변수를 사용하는 것으로 보이지만, 템플릿에도 적절히 전달되는지 확인해 보십시오. 변수 전달에 문제가 있을 경우, 오류가 발생할 수 있습니다.

아래 유사한 문제를 해결한 링크들을 참고하시면 도움이 될 것입니다:

유사 질문 링크:

  1. django.urls.exceptions.NoReverseMatch - URL Reverse 관련하여 발생할 수 있는 문제와 해결 방법을 제안합니다.

  2. NoReverseMatch at /accounts/signup/ - NoReverseMatch 에러를 처리하는 다양한 방법에 대해 설명합니다.

이 링크들을 통해, NoReverseMatch 오류의 원인과 해결책에 대한 힌트를 얻으실 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

임찬님의 프로필 이미지

작성한 질문수

질문하기