NoReverseMatch 오류는 무엇이며 어떻게 수정합니까?
몇 가지 코드가 있으며 실행될 때 NoReverseMatch를 던집니다.
NoReverseMatch at / my_url / Reverse for 'my_url_name'with arguments '()'and keyword arguments '{}'not found. n 개의 패턴 시도 : []
이것이 의미하는 바는 무엇이며 어떻게해야합니까?
NoReverseMatch
오류가 장고는 설치된 응용 프로그램의 URL 중 하나에 제공 한 URL에 대한 일치하는 URL 패턴을 찾을 수 있음을 말하고있다.
NoReverseMatch 예외는 제공된 매개 변수를 기반으로 URLconf에서 일치하는 URL을 식별 할 수 없을 때 django.core.urlresolvers에 의해 발생합니다.
디버깅을 시작하려면 제공된 오류 메시지를 분석하여 시작해야합니다.
/ my_url /에서 NoReverseMatch
현재 렌더링중인 URL입니다. 애플리케이션이 현재 액세스를 시도하고 있지만 일치 할 수없는 URL이 포함되어 있습니다.
'my_url_name'의 반대
찾을 수없는 URL의 이름입니다.
인수 '()'및
URL에 제공하는 키워드가 아닌 인수입니다.
키워드 인수 '{}'을 (를) 찾을 수 없습니다.
URL에 제공하는 키워드 인수입니다.
n 개의 패턴 시도 : []
다음은 일치시키려는 urls.py 파일에서 찾을 수있는 패턴입니다.
현재 렌더링중인 URL (URL, 뷰 및 관련된 모든 템플릿)과 관련된 소스에서 코드를 찾는 것으로 시작합니다. 대부분의 경우 이것은 현재 개발중인 코드의 일부입니다.
이 작업을 완료 한 후에는 .NET 용 URL을 생성하려는 코드 줄에 도달 할 때까지 django가 따르는 순서대로 코드를 읽어보십시오 my_url_name
. 다시 말하지만 이것은 아마도 최근에 변경 한 장소 일 것입니다.
이제 오류가 발생하는 위치를 찾았으므로 오류 메시지의 다른 부분을 사용하여 문제를 해결하십시오.
URL 이름
- 오타가 있습니까?
- 주어진 이름에 액세스하려는 URL을 제공 했습니까?
- 앱에서 app_name을 설정 했거나
urls.py
(예 :)app_name = 'my_app'
네임 스페이스와 함께 앱을 포함시킨 경우 (예 :include('myapp.urls', namespace='myapp')
, 반전 할 때 네임 스페이스를 포함해야 합니다 (예 :{% url 'myapp:my_url_name' %}
또는reverse('myapp:my_url_name')
.
인수 및 키워드 인수
인수 및 키워드 인수는 ()
url 패턴에서 주변 괄호 로 식별 할 수있는 지정된 url 내에 존재하는 캡처 그룹과 일치하는 데 사용됩니다 .
일치하는 URL에 추가 인수가 필요하다고 가정하고 오류 메시지를 살펴보고 주어진 인수의 값이 올바른지 먼저 살펴보십시오.
정확하지 않은 경우 :
값이 없거나 빈 문자열입니다.
이는 일반적으로 전달하는 값에 예상 한 값이 포함되어 있지 않음을 의미합니다. 값을 할당하고 중단 점을 설정 한 위치를 살펴보면이 값이 올바르게 전달되지 않는 이유를 파악해야합니다.
키워드 인수에 오타가 있습니다.
URL 패턴 또는 구성중인 URL에서이를 수정하십시오.
올바른 경우 :
정규식 디버그
정규식 과 같은 웹 사이트를 사용 하여 패턴이 만들고 있다고 생각하는 URL과 일치하는지 신속하게 테스트하고 URL 패턴을 상단의 정규식 필드에 복사 한 다음 텍스트 영역을 사용하여 생각하는 URL을 포함 할 수 있습니다. 일치해야합니다.
흔한 실수:
.
와일드 카드 문자 또는 기타 정규식 문자 와 일치\
접두사로 특정 문자를 이스케이프해야 합니다.소문자 / 대문자 만 일치
중 하나를 사용하여 시도
a-Z
하거나\w
대신a-z
또는A-Z
일치하는 패턴이 시도한 패턴에 포함되어 있는지 확인하십시오.
If it isn't here then its possible that you have forgotten to include your app within the
INSTALLED_APPS
setting (or the ordering of the apps withinINSTALLED_APPS
may need looking at)
Django Version
In Django 1.10, the ability to reverse a url by its python path was removed. The named path should be used instead.
If you're still unable to track down the problem, then feel free to ask a new question that includes what you've tried, what you've researched (You can link to this question), and then include the relevant code to the issue - the url that you're matching, any relevant url patterns, the part of the error message that shows what django tried to match, and possibly the INSTALLED_APPS
setting if applicable.
And make sure your route in the list of routes:
./manage.py show_urls | grep path_or_name
https://github.com/django-extensions/django-extensions
You are seeing this error because you are using a django version less than django 1.11. Try updating the django version and the error will be fixed.
Use:
pip install --upgrade django==1.11
References: https://docs.djangoproject.com/en/2.0/releases/1.11/#whats-new-1-11
참고URL : https://stackoverflow.com/questions/38390177/what-is-a-noreversematch-error-and-how-do-i-fix-it
'IT story' 카테고리의 다른 글
.NET 4.7을 선택할 수 없습니다. (0) | 2020.08.26 |
---|---|
하이픈이있는 자바 스크립트 객체 속성을 어떻게 참조합니까? (0) | 2020.08.26 |
'private val'과 'private final val'이 다른 이유는 무엇입니까? (0) | 2020.08.25 |
Composer를 사용하지 않고 Laravel을 설치할 수 있습니까? (0) | 2020.08.25 |
Vagrant 명령은 정확히 무엇을합니까? (0) | 2020.08.25 |