2011-11-16 12 views
6

Immagino di avere una semplice domanda su una migliore organizzazione del codice.Più app di django in una vista

dire che ho più applicazioni che implementano inoltre come queste applicazioni dovrebbero essere rappresentati strato di presentazione.

sto cercando di capire come organizzare il codice se ho bisogno di presentare più applicazioni su una pagina senza l'utilizzo di fotogrammi di corso?

esempio rapida: dire che ho due applicazioni (App1 e App2) entrambi implmeneting loro modello coresponding e vista. Ora ho bisogno della mia pagina indice per contenere la presentazione di queste due viste. Come posso implementare la vista generica che utilizza ancora le visualizzazioni dell'app invece di andare direttamente ai loro modelli? Preferirei che la mia app controllasse ancora la sua vista.

Grazie

risposta

5

penso che è possibile utilizzare render_to_string scorciatoia Così, in vista app si mette:

render_to_string(somestuff) # instead of render() or render_to_responce() 

e poi in indice di vista qualcosa di simile:

render(request, 'index.html', {'block1': view1(request), 'block2': view2(request)}) 

PS: anche dopo che ho scritto questo non sembra molto bello (sembrava migliore nella mia testa :)).

+0

Signori, le mie scuse per il ritardo di ringraziare sia i balazs che la pillola per i solidi suggerimenti. Mentre penso che entrambi siano solidi, andrò con la risposta di Pill perché sembra che sia sufficiente per le mie esigenze. – user1039384

+0

Inoltre, per darti dei pensieri in più perché mi piace un po 'rispetto alla risposta precedente: Mentre l'uso principale è semplice come scrivere un CSS che definisce la posizione di block1 e block2 e poi nel template usa l'effettivo {{block1} } e {{block2}} sotto div corrispondenti, l'altro valore è che la classe app può anche usare quel metodo per rendere il proprio modello, se richiesto, che presenta solo le informazioni per quell'app. Quindi la logica sarà legata ad ogni rappresentazione che vuole decidere dove mostrare l'app e l'app sarà responsabile della rappresentazione effettiva dei suoi dati. Grazie ancora – user1039384

3

Grande domanda, ti dico come l'ho fatto.

Ho utilizzato tag di modello personalizzati (specifici per app). Questi tag modello inseriscono elementi aggiuntivi nel contesto, cosa puoi usare nei tuoi modelli. Puoi leggere ulteriori informazioni dallo docs sui tag modello personalizzati.

C'è un buon libro, Practical django Projects 2nd edition, che è un po 'obsoleto, penso, ma ti dà una grande visione dell'organizzazione del progetto.

Problemi correlati