<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">2013/8/24 Carlos Catucci <span dir="ltr"><<a href="mailto:carlos.catucci@gmail.com" target="_blank">carlos.catucci@gmail.com</a>></span><br><div> </div>



<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>In pratica io da un template principale devo includere un blocco di html.<br>



Normalmente basta fare un {% include path.to.template %} per avere cio che serve. <br>

Pero'
 il mio e' un caso particolare, in quanto il pezzo incluso:<br><br>.primo e' di 
un diverso module<br></div></div></blockquote><div><br></div><div>Ok, ma questo non è un caso molto particolare :P</div><div>Spesso succede - in generale dipende da come è stata progettata l'app Django (intendo, se template aware o no)</div>



<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>.scecondo deve anche avere delle variabili 
valorizzate, specifiche del suo modulo.<br></div></div></blockquote><div><br></div><div>ok.</div><div>Il punto è: le variabili ad un template sono passate dalla/e view/s a cui questo è associato.</div><div>
<br></div><div>Le alternative che vedo sono due:</div><div><br></div><div>a) Aggiungi le variabili che ti servono al contesto che ritorni dalla view che renderizza il "tuo" template principale - quello che deve includere il template di terze parti, per intenderci</div>

<div> [<a href="https://docs.djangoproject.com/en/1.5/ref/templates/api/#django.template.Context" target="_blank">https://docs.djangoproject.com/en/1.5/ref/templates/api/#django.template.Context</a>]</div>

<div> [<a href="https://docs.djangoproject.com/en/1.5/ref/templates/api/#django.template.RequestContext" target="_blank">https://docs.djangoproject.com/en/1.5/ref/templates/api/#django.template.RequestContext</a>]</div><div>


<br>
</div><div>b) Metti una pezza modificando il template originale dell'app che devi includere con un templatetags.</div><div>Precisamente direi un *Inclusion tag* (<a href="https://docs.djangoproject.com/en/1.5/howto/custom-template-tags/#inclusion-tags)" target="_blank">https://docs.djangoproject.com/en/1.5/howto/custom-template-tags/#inclusion-tags)</a>.. ma ho capito ben poco del tuo problema specifico.</div>

<div><br></div>

<div>Forse potrebbe non essere nemmeno veramente necessario.</div><div style>Ti dico anche che, se la app di terze parti che vuoi includere è stata progettata per bene, non dovresti modificare proprio nulla :)</div><div>

 </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div dir="ltr"><div><br>So che si possono usare i custom
 template tag, ho provato a scriverne uno, mas incontro due tipi di 
problema.<br>Il primo e' se sposto la cartella templatetags dentro
 la templates del progetto, nel qual caso posso includere il pezzo di 
codice ma non esegue la call del custom tag. <br></div></div></blockquote><div><br></div><div>Questa non è una buona idea: <a href="https://docs.djangoproject.com/en/1.5/howto/custom-template-tags/#code-layout" target="_blank">https://docs.djangoproject.com/en/1.5/howto/custom-template-tags/#code-layout</a></div>



<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>Siccome la 
templatetags dovrebbe invece risiedere dentro il modulo, se la sposto 
ottemgo un errore di remplate non trovato se cerco di importare. <br><br>Ho provato a aggiungere la directory modulo/templatetags nel TEMPLATE_DIRS ma senza successo. <br></div></div></blockquote><div><br></div><div>
Questo è proprio sbagliato!</div><div><br></div><div>Quello che devi fare (per certo) è aggiungere alle TEMPLATE_DIRS, la cartella che contiene i templates dell'altra applicazione (app1 nel tuo esempio).</div>
<div><br></div><div>Difatti, questa è la ragione per cui ti dicevo che "non è poi così strano includere un template di un'altra applicazione" - dipende dalla progettazione dell'App (come dicevo).</div><div>


<br></div><div>Se la progettazione non prevede una organizzazione "templatedir-centrica" (passami il neologismo), ma hai diverse cartelle templates sparse per le applicazioni del tuo progetto Django, ecco che TEMPLATE_DIRS interviene per la risoluzione dei nomi/path.</div>


<div><br></div><div>In generale, non credo esista una vera rule-of-thumb sull'organizzazione dei templates in un progetto Django, dipende dal caso specifico.</div><div>Quello che ti suggerirei è di pensare a due cose</div>


<div><br></div><div>a) Quanto l'app Django sia realmente "pluggable" in altri progetti se include al suo interno i suoi template </div><div>b) Se includere i template direttamente nella cartella della App sia veramente necessario - in generale non lo è imho</div>


<div><br></div><div>Per quest'ultimo punto, io spesso preferisco inseirire direttamente nella App i templates associati agli "Inclusions Tags"  perché tipicamente "style-independent" ma "application-dependent".</div>


<div><br></div><div>Spero di essere stato sufficientemente chiaro.</div><div><br></div><div>Ad ogni modo, se condividi altri dettagli, credo ti si potrà aiutare meglio ;)</div><div><br></div>
<div>m2c</div><div><br></div><div>--</div><div>Valerio</div></div>
</div></div>