[Python] Programmazione web

Manlio Perillo manlio_perillo a libero.it
Sab 26 Apr 2008 10:44:13 CEST


Nicola Larosa ha scritto:
> Manlio Perillo wrote:
>> Questo significa che devi fare i salti mortali se ad esempio vuoi
>> usare il sistema di templating di Django in altre applicazioni;
> 
> *cough* Salti mortali? 

Si, salti mortali ;-).

> Son quattro istruzioni, eh:
> 

Non cambia il fatto che l'API č mal disegnata.

>     from django.conf import settings
>     from django.template.loader import render_to_string
> 
>     settings.configure(TEMPLATE_DIRS=['./'])
>     output = render_to_string('tpl.html')
> 


Come detto, gestisce lo stato del templating in un modulo (globale), 
invece che avere qualcosa come:

lookup = TemplateLookup(template_dirs=['.'], ...)
output = lookup.render_to_string('tpl.html')



Ovviamente per evitare che ogni view debba instanziarsi il suo template 
lookup, basta metterlo nell'environ:

# da qualche parte Django deve fare...
environ['django.template'] = lookup

def render_to_string(environ, filename):
    """Funzione definita da Django, non dall'utilizzatore!"""

    lookup = environ['django.template']
    return lookup.render_to_string(filename)



Per me una API di un framework basato su WSGI dovrebbe essere cosė.

Lo stato *va* mantenuto nell'environ, con in pių funzioni di supporto 
che accettano l'environ come parametro e fanno il loro lavoro.

> E te l'avevo pure mandato, lo script co'sta roba dentro. ;-)
> 

A proposito, lo script che ti avevo rimandato lo hai controllato?




Ciao  Manlio Perillo


Maggiori informazioni sulla lista Python