¿Cómo puedo ver los patrones de url actuales en los que se está viendo "reverse"?
Estoy llamando al revés en una vista con un argumento que creo que debería funcionar, pero no funciona. ¿De alguna manera puedo verificar qué hay allí y por qué mi patrón no lo está?
django
django-urls
django-views
interstar
fuente
fuente
Respuestas:
Si desea una lista de todas las URL en su proyecto, primero necesita instalar django-extensions , agréguelo a su configuración de esta manera:
Y luego, ejecuta este comando en tu terminal
Para más información puede consultar la documentación.
fuente
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
django_extensions
a suINSTALLED_APPS
después de la instalaciónPrueba esto:
O si todavía estás en Django 1. *:
fuente
set(v[1] for k,v in get_resolver(None).reverse_dict.items())
django.core.urlresolvers
se eliminó en Django 2.0 , reemplace la línea de importación confrom django.urls import get_resolver
Django> = solución 2.0
Probé las otras respuestas en esta publicación y no funcionaban con Django 2.X, incompletas o demasiado complejas. Por lo tanto, aquí está mi opinión sobre esto:
Este código imprime todas las URL, a diferencia de otras soluciones, imprimirá la ruta completa y no solo el último nodo. p.ej:
fuente
yield acc + [str(l.pattern)]
línea ayield acc + [str(l.pattern)], l.callback
. Tenga en cuenta que devolverá la función de vista en sí y no un nombreDjango 1.11, Python 2.7.6
Luego pegue el siguiente código.
Salida de muestra:
fuente
None
a la líneaurls = urlresolvers.get_resolver(None)
, y a veces recibí 'Ninguno' al comienzo de algunas URL.Hay una receta en estado activo
fuente
show_urls(urls.url_patterns)
.ModuleNotFoundError: No module named 'urls'
, no sé por qué?test.py
en la raíz de mi proyecto y tengo este error, también si lo hagoimport urls
en intérprete, también recibo este error.import urls
es una importación local, por lo que probablemente deba hacerlofrom app_name import urls
.Estoy usando el siguiente comando:
(Python3 + Django 1.10)
Uso:
Salida de muestra:
fuente
print
. En lugar de usarself.stdout.write
. docs.djangoproject.com/en/1.10/howto/custom-management-commandsHay un complemento que uso: https://github.com/django-extensions/django-extensions , tiene un comando show_urls que podría ayudar.
fuente
En python manage.py shell
fuente
En Django 3.0, es tan fácil como:
Huellas dactilares:
[<URLPattern '' [name='home']>, <URLPattern '/testing' [name='another_url']>]
fuente
He extendido el comando de Seti para mostrar el espacio de nombres, todas las partes de url, ajustar automáticamente los anchos de columna, ordenados por (espacio de nombres, nombre): https://gist.github.com/andreif/263a3fa6e7c425297ffee09c25f66b20
Actualización: una nueva versión con OrderedDict ahora vive en el paquete django-🍌s: https://github.com/5monkeys/django-bananas/blob/master/bananas/management/commands/show_urls.py
fuente
Simplemente escriba una url que sabe que no existe y el servidor devolverá un mensaje de error con una lista de patrones de url.
Por ejemplo, si está ejecutando un sitio en http: // localhost: 8000 / something
Escribir
http: // localhost: 8000 / something / blahNonsense , y su servidor devolverá la lista de búsqueda de URL y la mostrará en el navegador
fuente
Solución minimalista para django 2.0
Por ejemplo, si está buscando una URL que esté en la primera aplicación de instalted_apps, puede acceder de esta manera:
fuente
get_resolver
desdedjango.core.urlresolvers
. Gracias marcio!Django 1.8, Python 2.7+ Simplemente ejecute estos comandos en su Shell. Python manage.py shell y ejecuta el siguiente código.
fuente
Puede crear una importación dinámica para reunir todos los patrones de URL de cada aplicación en su proyecto con un método simple como este:
list_of_all_url_patterns = get_url_patterns()
Recientemente utilicé algo como esto para crear una etiqueta de plantilla para mostrar enlaces de navegación activos.
fuente
Aquí
your_main_app
está el nombre de la aplicación donde se ubica su archivo settings.pyfuente