Dado un uri como /home/
Quiero encontrar la función de vista a la que corresponde, preferiblemente en un formato como app.views.home
o simplemente <app_label>.<view_func>
. ¿Hay alguna función que me dé esto?¿Obtiene la función de vista desde la solicitud uri?
12
A
Respuesta
23
Puede usar el método resolve proporcionado por django para obtener la función. Puede usar el atributo __module__
de la función devuelta para obtener la etiqueta de la aplicación. Esto devolverá una cadena como project.app.views
. Así que algo como esto:
from django.core.urlresolvers import resolve
myfunc, myargs, mykwargs = resolve("/hello_world/")
mymodule = myfunc.__module__
0
Basado en KillianDS's answer, aquí está mi solución:
from django.core.urlresolvers import resolve
def response(request, template=None, vars={}):
if template is None:
view_func = resolve(request.META['REQUEST_URI'])[0]
app_label = view_func.__module__.rsplit('.', 1)[1]
view_name = view_func.__name__
template = '%s.html' % os.path.join(app_label, view_name)
return render_to_response(template, vars, context_instance=RequestContext(request))
Ahora sólo puede llamar return response(request)
al final de la vista funcs y cargará automáticamente app/view.html
como la plantilla y pasar en el contexto de solicitud.
3
Desde Django 1.3 (marzo de 2011) la función resolve
en el módulo urlresolvers
devuelve un objeto ResolverMatch
. Que proporciona acceso a todos los atributos de la coincidencia de URL resuelta, incluida la ruta invocable de vista.
>>> from django.core.urlresolvers import resolve
>>> match = resolve('/')
>>> match.func
<function apps.core.views.HomeView>
>>> match._func_path
'apps.core.views.HomeView'
Cuestiones relacionadas
- 1. ¿Cómo obtener la solicitud uri desde location.href en javascript?
- 2. Llamando a la función vista desde otra vista - Backbone
- 3. Validación de Uri desde la Cadena
- 4. Obtiene el objeto HttpServletRequest (solicitud) desde el código de Java
- 5. Obtener Uri desde la ruta real
- 6. PHP Zend Framework - ¿Cómo obtener Fragmento URI de solicitud desde objeto de solicitud?
- 7. ¿Cómo se obtiene el URI del objeto de solicitud en Django?
- 8. Obtiene la clase propietaria de la función Python del decorador
- 9. ¿Cómo obtener el URI de solicitud en Grails?
- 10. Cómo obtener la vista padre desde la vista parcial
- 11. Android obtiene una ruta a la imagen desde la miniatura?
- 12. La vista obtiene su estado dibujable (presionado, etc ...) desde su elemento primario
- 13. activar la función después de devolver HttpResponse desde la vista de django
- 14. Acceder a la solicitud actual en la vista Express/Jade
- 15. La función de plantilla de C++ obtiene valores predeterminados erróneos
- 16. cómo enviar la solicitud deliver_sm desde SMSC
- 17. ¿La alerta no aparece desde la vista web en android?
- 18. Obteniendo el URI de solicitud original con PrettyFaces
- 19. MVVM Modelo de acceso desde la vista
- 20. ¿Cómo obtener la ruta del archivo desde el URI?
- 21. Java: Obtener URI desde FilePath
- 22. Obtiene la categoría de WordPress desde publicación única
- 23. Vista previa de la solicitud CURL antes de enviarla
- 24. Backbone: actualización de la URL de la función de vista
- 25. Devolver objeto desde la función
- 26. Obtener información de solicitud a la vista helper
- 27. Uri.EscapeDataString() - URI no válido: la cadena Uri es demasiado larga
- 28. Necesito llamar a la función original desde la función desviada
- 29. ¿Cómo redirigir desde un ManagedBean para cuando la solicitud enviada es una solicitud de Ajax?
- 30. ¿Cómo realizo una solicitud POST con open-uri?
dado que ya tiene la solicitud, simplemente puede hacer "request.resolver_match" en lugar de llamar a resolver –