Django Reverse с аргументами '() 'и ключевыми словами' {} ' не найден



Привет у меня есть проблема бешенство.



у меня есть шаблон 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.


чего мне здесь не хватает?

597   3  

3 ответов:

необходимо указать project_id:

reverse('edit_project', kwargs={'project_id':4})

Doc здесь

эти проблемы дали мне большую головную боль, когда я попытался использовать обратный для создания ссылки активации и отправить его по электронной почте, конечно. Так что я думаю от 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)) 

решение также более просто

from django.urls import resolve

resolve('edit_project', project_id=4)

документация по этому ярлыку

Comments

    Ничего не найдено.