안녕하세요, 격렬한 문제가 있습니다.
다음과 같은 URL 패턴이 있습니다.
# mproject/myapp.urls.py
url(r'^project/(?P<project_id>\d+)/$','user_profile.views.EditProject',name='edit_project'),
브라우저에서 잘 작동하지만 테스트를 위해 쉘 에서이 작업을 수행합니다.
from django.test import Client
from django.core.urlresolvers import reverse
client= Client()
response = client.get(reverse('edit_project'), project_id=4)
나는 두려운 것을 얻는다 :
NoReverseMatch: Reverse for 'edit_project' with arguments '()' and keyword arguments '{}' not found.
내가 여기서 무엇을 놓치고 있습니까?
답변
답변
@ miki725 솔루션은 절대적으로 정확합니다. 또는와 args
달리 속성 을 사용하려면 kwargs
다음과 같이 코드를 간단히 수정할 수 있습니다.
project_id = 4
reverse('edit_project', args=(project_id,))
이에 대한 예는 설명서 에서 찾을 수 있습니다 . 이것은 본질적으로 동일한 작업을 수행하지만 속성은 인수로 전달됩니다. 전달 된 인수는 반대로하기 전에 값을 할당해야합니다. 이 경우에는 올바른 네임 스페이스를 사용하십시오 'edit_project'
.
답변
이 문제는 활성화 링크를 생성하기 위해 reverse를 사용하고 전자 메일을 통해 보내려고 할 때 큰 두통을 겪었습니다. 그래서 나는 tests.py에서 동일하다고 생각합니다. 이를 수행하는 올바른 방법은 다음과 같습니다.
from django.test import Client
from django.core.urlresolvers import reverse
#app name - name of the app where the url is defined
client= Client()
response = client.get(reverse('app_name:edit_project', project_id=4))