Diciamo che ho un progetto Django con tre app: foo, bar e colla. Sto cercando di seguire le convenzioni delle app riutilizzabili, quindi foo e bar non dipendono (e non ne sanno nulla) l'un l'altro o sulla colla. Colla contiene codice per integrare le altre due app nel sito.Django: Come faccio a sovrascrivere gli URL forniti dall'app nel mio progetto urlconf?
Foo fornisce un tag modello che desidero includere in una delle pagine fornite dalla barra. La vista per la pagina della barra può essere passata a un modello alternativo. Creo un modello in colla che estende il modello della barra e include il tag modello di foo. Per passare il mio nuovo modello alla visualizzazione della barra, ho bisogno di modificare la voce urlconf che punta ad essa.
Il mio progetto urlconf simile a questa:
urlpatterns = patterns('',
(r'^$', include('glue.urls')),
(r'^foo/', include('foo.urls')),
(r'^bar/', include('bar.urls')),
)
Qual è il modo più elegante per passare il modello alternativo (o qualsiasi altra vista argomenti arbitrari, se è per questo) per la visualizzazione in bar? Non voglio modificare direttamente urlconf della barra, in quanto ciò renderebbe dipendente dalla colla.
L'unico altro metodo che viene in mente è quello di rimuovere include('bar.urls')
, copiare i modelli di URL in urlconf di barra nel urlconf progetto e modificare il modello che mi interessa. Tale impostazione viola il principio DRY però. C'è qualche altra soluzione che mi manca?
Cercherò in questo approccio, ma non è proprio quello che sto cercando. Cosa succede se volevo passare in qualche altro argomento alla vista? La vista viene chiamata in urlconf, quindi sembra il posto logico per passare l'argomento. –
Vuoi passare argomenti arbitrari alla vista? Chiarire la tua domanda per favore –
Sì, simile agli argomenti che si sarebbero passati ad una vista generica da urlconf. –