test - Django Reverse con argumentos ''()'' y argumentos de palabras clave ''{}'' no encontrados
test form django (4)
Hola, tengo un problema exasperante.
Tengo un patrón de URL así:
# 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 el temido:
NoReverseMatch: Reverse for ''edit_project'' with arguments ''()'' and keyword arguments ''{}'' not found.
¿Que me estoy perdiendo aqui?
El ''nombre_aplicación'' es el espacio de nombres que le dio a la configuración de url, y no el nombre real de la aplicación.
La forma correcta sería agregar un parámetro adicional a su configuración de url - ''namespace'' esto sería real el ''app_name'' que user2517191 fue mencionado y ''edit_project'' en client.get (reverse (''app_name: edit_project'') sería el nombre del parámetro que le dio a la configuración de url.
Este problema me dio un gran dolor de cabeza cuando traté de utilizar el reverso para generar el enlace de activación y enviarlo por correo electrónico, por supuesto. Así que creo que desde tests.py será lo mismo. La forma correcta de hacerlo es siguiendo:
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)
Resolver es también más sencillo
from django.urls import resolve
resolve(''edit_project'', project_id=4)