versión corta:Django: ¿Cómo puedo identificar la vista de llamada desde una plantilla?
¿Hay una manera sencilla, una función de identificar el punto de vista de llamadas en una plantilla de Django, sin pasar variables de contexto adicionales?
largo (original) Versión:
Una de mis aplicaciones Django tiene varios puntos de vista diferentes, cada uno con su propio patrón de URL llamado, que todos rinden la misma plantilla. Hay una cantidad muy pequeña de código de plantilla que debe cambiar dependiendo de la vista llamada, demasiado pequeña para que valga la pena configurar la creación de plantillas separadas para cada vista, así que idealmente necesito encontrar una manera de identificar la vista de llamada en la plantilla .
He intentado configurar las vistas para pasar variables de contexto adicionales (por ejemplo, "view_name") para identificar la vista de llamadas, y también he intentado utilizar {% ifequal request.path "/some/path/" %}
comparaciones, pero ninguna de estas soluciones parece particularmente elegante. ¿Hay una mejor manera de identificar la vista de llamada desde la plantilla? ¿Hay alguna forma de acceder al nombre de la vista o al nombre del patrón de URL?
Actualización 1: En cuanto al comentario de que esto es simplemente un caso de Malentendiéndome MVC, entiendo MVC, pero Django's not really an MVC framework. Creo que la forma en que está configurada mi aplicación es coherente con la visión de Django sobre MVC: las vistas describen que se presentan los datos, y las plantillas describen cómo se presentan los datos. Simplemente sucede que tengo varias vistas que preparan datos diferentes, pero todas usan la misma plantilla porque los datos se presentan de la misma manera para todas las vistas. Solo busco una manera simple de identificar la vista de llamada desde la plantilla, si esto existe.
Actualización 2: Gracias por todas las respuestas. Creo que la pregunta está siendo sobreexigida, como mencioné en mi pregunta original, ya he considerado y probado todas las soluciones sugeridas, así que la he reducido a una "versión corta" ahora en la parte superior de la pregunta . Y en este momento parece que si alguien publicara simplemente "No", sería la respuesta más correcta :)
Actualización 3: Carl Meyer publicó "No" :) Gracias de nuevo, a todos.
No estoy seguro de si puedo pensar en una razón por la cual diferentes vistas deberían estar llamando a la misma plantilla? ¿Puedes elaborar? Creo que es posible que hayas malentendido el concepto de MVC – Mez
Gracias por el comentario. Cada una de las vistas realiza una consulta ORM diferente, pero todas las salidas tienen el mismo formato, de ahí la plantilla común por el bien de DRY. He editado la pregunta con más detalles. – bryan
Me gustaría pasar una variable de contexto adicional a la plantilla. Solución simple y fácil de usar. Por qué no? – codeape