Domanda

Diciamo che ho 3 applicazioni Django, app Paese , app Social e app Financial .

Country è un app 'di navigazione master'. Essa elenca tutti i paesi in un 'indice' vista e mostra i dettagli di ciascun paese sul suo punto di vista 'dettagli'.

dettagli di ogni paese includono i propri dati sociali (da App sociali) ei loro dettagli finanziari (da App finanziaria).

sociali e finanziari entrambi hanno una vista di dettaglio (per ogni paese)

C'è un modo elegante per 'spina' in quelle viste sub-dettaglio nella vista maestro dettaglio fornito dai paesi? Così, per ogni pagina paese particolare vorrei vedere 2 schede che mostra la i dettagli finanziari per quel paese sociale e.

È stato utile?

Soluzione

2 soluzione comune che uso per questo problema:

Modelli parziali:
Creazione di un modello per il rendering "sociale" e "finanziaria" che non ha bisogno roba dal punto di vista, diverso da quello l'oggetto si sta lavorando su (e utilizza le funzioni oggetti o tag di template per renderlo). allora si può facilmente {% include%} (e impostare la variabile necessaria prima).
Questa visione parziale non rende una pagina HTML completo, ma solo un singolo DIV o qualche altro elemento HTML che si desidera utilizzare. Se hai bisogno anche di un "social-only" pagina, è possibile creare una pagina che rende l'intestazione e quindi include il modello parziale. È possibile utilizzare una convenzione come _template.html per il modello parziale e template.html per il modello normale.

AJAX:
Fai la tua "sociali" e vista "finanziarie" consapevole di essere stato chiamato a XMLHTTPRequest (request.is_ajax ()). Se lo sono, si restituiscono solo un elemento DIV, senza tutto il codice HTML intorno ad esso. In questo modo la vostra pagina master può rendere senza di essa, e aggiungere che il contenuto al volo.
Il modo in cui AJAX ha diversi vantaggi: non rendete il punto di vista del plugin sulla stessa richiesta, come l'intera pagina, quindi se avete molti di questi punti di vista di plugin, la pagina master verrà caricato più velocemente, e si può avere un javascript intelligente scegliere solo le relative viste di plugin per chiedere.
Inoltre, è possibile utilizzare la visualizzazione normale per generare dati necessari nel modello (che non si può davvero fare nel metodo Modelli parziale).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top