728x90
반응형
Reverse for 'hb_quiz_volume_order' with arguments '()' and keyword arguments '{u'volume': u'\uc608\ub808\ubbf8\uc57c \uc560\uac00', u'quiz_id': 0}' not found. 1 pattern(s) tried: [u'hb/quiz/volume/order/(?P<volume>\\w+)/(?P<quiz_id>\\d+)/$'] 장고에서 난 오류입니다. 무엇이 잘못된 것일까요? 아무래도 원인은 volume 값이 한글이어서 그런것 같습니다. |
네, 맞습니다. 오류 메시지와 정황을 보면 volume 값이 한글(예: "예레미야 애가")이기 때문에 Django의 URL 패턴과 매칭이 되지 않는 것이 문제입니다. 구체적으로 설명드릴게요.
🔍 오류 메시지 분석
Reverse for 'hb_quiz_volume_order' with arguments '()' and keyword arguments '{u'volume': u'\uc608\ub808\ubbf8\uc57c \uc560\uac00', u'quiz_id': 0}' not found.
1 pattern(s) tried: [u'hb/quiz/volume/order/(?P<volume>\\w+)/(?P<quiz_id>\\d+)/$']
- volume: 예레미야 애가 (한글 문자열)
- URL 패턴: hb/quiz/volume/order/(?P<volume>\w+)/(?P<quiz_id>\d+)/
- 에러 내용: 해당 패턴에 대해 reverse()를 할 수 없음
🚨 문제의 원인
정의된 URL 패턴의 정규표현식에서 (?P<volume>\w+) 부분이 문제입니다.
- \w+는 영문자, 숫자, 밑줄(_)만 매칭합니다.
- 한글, 띄어쓰기(공백), 특수문자는 \w에 포함되지 않습니다.
- 그래서 '예레미야 애가' 같은 문자열은 매칭이 안 됩니다.
✅ 해결 방법
1. 정규표현식을 수정하세요
URL 패턴을 다음과 같이 변경하세요:
# urls.py
url(r'^hb/quiz/volume/order/(?P<volume>[^/]+)/(?P<quiz_id>\d+)/$', views.hb_quiz_volume_order, name='hb_quiz_volume_order')
- [^/]+ 는 /를 제외한 어떤 문자든 포함할 수 있게 해줍니다.
- 즉, 한글, 공백, 특수문자 등도 허용됩니다.
2. URL 인코딩/디코딩도 확인하세요 (중요!)
한글을 URL에 사용할 경우 자동으로 인코딩되므로, 다음과 같이 사용할 수 있습니다.
from django.urls import reverse
from django.utils.http import urlquote # Django 1.x
# Python 3에서는 urllib.parse.quote 사용
url = reverse('hb_quiz_volume_order', kwargs={
'volume': urlquote(u'예레미야 애가'),
'quiz_id': 0
})
또는 Django 1.10 이하에서:
from django.utils.http import urlquote
💡 추가 팁
- 가능하면 URL에서 한글이나 공백 대신 slug(예: jeremiah-lamentations)를 사용하는 것이 일반적입니다.
- slugify 해서 저장하고 URL로는 slug를 쓰는 방식을 추천드립니다.
https://www.djangoproject.com/
Django
The web framework for perfectionists with deadlines.
www.djangoproject.com
728x90
반응형
'컴퓨터에서는' 카테고리의 다른 글
[ Python ] 파이썬 컴파일 오류 Fatal Python error: init_import_site: Failed to import the site module (0) | 2025.04.17 |
---|---|
[ Rust ] 초급 문법 : 8. 기본 연산자 – 산술, 비교, 논리 연산자 사용법 (0) | 2025.04.16 |
[ Rust ] 초급 문법 : 7. 참조와 대여 (&, &mut) – 변수를 참조하는 방법과 가변 참조 (0) | 2025.04.02 |
티스토리에서 pdf 파일의 내용을 보여주는 방법에 대해 알아보았습니다. (2) | 2025.04.01 |
[ 자바스크립트 ] 문자열과 숫자의 형식을 변경해 보았습니다. (2) | 2025.03.31 |
댓글