2013/8/24 Carlos Catucci <carlos.catu...@gmail.com>
> In pratica io da un template principale devo includere un blocco di html. > Normalmente basta fare un {% include path.to.template %} per avere cio che > serve. > Pero' il mio e' un caso particolare, in quanto il pezzo incluso: > > .primo e' di un diverso module > Ok, ma questo non è un caso molto particolare :P Spesso succede - in generale dipende da come è stata progettata l'app Django (intendo, se template aware o no) > .scecondo deve anche avere delle variabili valorizzate, specifiche del suo > modulo. > ok. Il punto è: le variabili ad un template sono passate dalla/e view/s a cui questo è associato. Le alternative che vedo sono due: 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 [ https://docs.djangoproject.com/en/1.5/ref/templates/api/#django.template.Context ] [ https://docs.djangoproject.com/en/1.5/ref/templates/api/#django.template.RequestContext ] b) Metti una pezza modificando il template originale dell'app che devi includere con un templatetags. Precisamente direi un *Inclusion tag* ( https://docs.djangoproject.com/en/1.5/howto/custom-template-tags/#inclusion-tags).. ma ho capito ben poco del tuo problema specifico. Forse potrebbe non essere nemmeno veramente necessario. Ti dico anche che, se la app di terze parti che vuoi includere è stata progettata per bene, non dovresti modificare proprio nulla :) > > So che si possono usare i custom template tag, ho provato a scriverne uno, > mas incontro due tipi di problema. > 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. > Questa non è una buona idea: https://docs.djangoproject.com/en/1.5/howto/custom-template-tags/#code-layout > Siccome la templatetags dovrebbe invece risiedere dentro il modulo, se la > sposto ottemgo un errore di remplate non trovato se cerco di importare. > > Ho provato a aggiungere la directory modulo/templatetags nel TEMPLATE_DIRS > ma senza successo. > Questo è proprio sbagliato! Quello che devi fare (per certo) è aggiungere alle TEMPLATE_DIRS, la cartella che contiene i templates dell'altra applicazione (app1 nel tuo esempio). 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). 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. In generale, non credo esista una vera rule-of-thumb sull'organizzazione dei templates in un progetto Django, dipende dal caso specifico. Quello che ti suggerirei è di pensare a due cose a) Quanto l'app Django sia realmente "pluggable" in altri progetti se include al suo interno i suoi template b) Se includere i template direttamente nella cartella della App sia veramente necessario - in generale non lo è imho Per quest'ultimo punto, io spesso preferisco inseirire direttamente nella App i templates associati agli "Inclusions Tags" perché tipicamente "style-independent" ma "application-dependent". Spero di essere stato sufficientemente chiaro. Ad ogni modo, se condividi altri dettagli, credo ti si potrà aiutare meglio ;) m2c -- Valerio
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python