Pyramid/Pylons Framework - Opinione su come sto usando "aiutanti" per svolgere determinate attività

StackOverflow https://stackoverflow.com/questions/7379668

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!

È stato utile?

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()}.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top