Digamos que tengo un proyecto de Django con tres aplicaciones: foo, barra y pegamento. Intento seguir las convenciones de aplicaciones reutilizables, por lo que foo y bar no dependen de (y no saben nada) entre sí o en el pegamento. El pegamento contiene código para integrar las otras dos aplicaciones en el sitio.Django: ¿Cómo anulo las URL provistas por la aplicación en mi proyecto urlconf?
Foo proporciona una etiqueta de plantilla que quiero incluir en una de las páginas suministradas por la barra. La vista de la página de la barra se puede pasar a una plantilla alternativa. Hago una plantilla en pegamento que extiende la plantilla de barra e incluye la etiqueta de plantilla de foo. Para pasar mi nueva plantilla a la vista de la barra, necesito modificar la entrada urlconf que apunta a ella.
Mi proyecto URLconf es como la siguiente:
urlpatterns = patterns('',
(r'^$', include('glue.urls')),
(r'^foo/', include('foo.urls')),
(r'^bar/', include('bar.urls')),
)
Cuál es la forma más elegante para pasar la plantilla alternativa (o cualquier otra vista argumentos arbitrarios, para el caso) a la vista en la barra? No quiero modificar el urlconf de la barra directamente, ya que eso lo haría dependiente del pegamento.
El único otro método que puedo pensar es eliminar include('bar.urls')
, copiar los patrones de url en el urlconf de la barra en el proyecto urlconf y modificar el patrón que me interesa. Sin embargo, este enfoque infringe el principio DRY. ¿Hay alguna otra solución que me falta?
Voy a mirar en este enfoque, pero no es exactamente lo que estoy buscando. ¿Qué pasaría si quisiera pasar algún otro argumento a la vista? La vista se llama en el urlconf, por lo que parece el lugar lógico para pasar el argumento. –
¿Desea pasar argumentos arbitrarios a la vista? Aclara tu pregunta por favor –
Sí, similar a los argumentos que pasaría a una vista genérica desde el urlconf. –