Hola, tengo un problema exasperante.
Tengo un patrón de URL como este:
# mproject/myapp.urls.py
url(r'^project/(?P<project_id>\d+)/$','user_profile.views.EditProject',name='edit_project'),
funciona bien en el navegador pero para probar, cuando hago esto en el shell:
from django.test import Client
from django.core.urlresolvers import reverse
client= Client()
response = client.get(reverse('edit_project'), project_id=4)
Me da miedo:
NoReverseMatch: Reverse for 'edit_project' with arguments '()' and keyword arguments '{}' not found.
¿Que me estoy perdiendo aqui?
django
django-testing
Darwin Tech
fuente
fuente
from django.urls import reverse
Respuestas:
Tienes que especificar
project_id
:Doc aquí
fuente
La solución @ miki725 es absolutamente correcta. Alternativamente, si desea utilizar el
args
atributo en lugar dekwargs
, entonces simplemente puede modificar su código de la siguiente manera:Un ejemplo de esto se puede encontrar en la documentación . Esto esencialmente hace lo mismo, pero los atributos se pasan como argumentos. Recuerde que cualquier argumento que se pase debe tener asignado un valor antes de ser revertido. Simplemente use el espacio de nombres correcto, que en este caso es
'edit_project'
.fuente
Este problema me causó un gran dolor de cabeza cuando intenté usar el reverso para generar el enlace de activación y, por supuesto, enviarlo por correo electrónico. Así que creo que de tests.py será lo mismo. La forma correcta de hacer esto es la siguiente:
fuente
Resolver también es más sencillo
Documentación sobre este atajo
fuente