Pyramid/Pylons Framework - Opinione su come sto usando "aiutanti" per svolgere determinate attività
Domanda
Nella piramide, ho creato una funzionalità di "aiutanti" simile a quella nei piloni.
Una funzione particolare nel mio file helpers.py è così:
from pyramid.renderers import render_to_response
def createBlog():
## lots of code here ##
return render_to_response('blog.mako', {'xyz':xyz})
E poi nelle mie altre applicazioni posso importare aiutanti e fare qualcosa come i seguenti nei miei modelli:
${h.createBlog()}
che crea un blog sulla mia pagina. Ma mi chiedo solo che questo sia un buon modo di usare gli aiutanti per creare plugin in stile "modulo" che posso facilmente usare ovunque nei miei progetti. O ci sono difetti in questa tecnica a cui non ho ancora pensato?
Grazie!
Soluzione
Dipende davvero da quante cose vuoi esporre a livello globale. Ovviamente qualcosa in cui metti h
è disponibile in tutta l'applicazione, mentre è possibile restituire il createBlog
funzione solo nelle viste in cui si desidera che sia. Un bocconcino poco noto è che se si utilizzano viste basate su classe, l'istanza di classe effettiva è disponibile nella vista come view
variabile globale. Per esempio:
class Foo(object):
def __init__(self, request):
self.request = request
def createBlog(self):
return render('blog.mako'. {})
@view_config(...)
def myview(self):
return {}
Ora nel tuo modello puoi chiamare il rendering il tuo blog utilizzando ${view.createBlog()}
.