2011-09-11 3 views
2

В пирамиде я создал функциональность «помощников», аналогичную функции в пилонах.Pyramid/Pylons Framework - мнение о том, как я использую «помощники» для выполнения определенных задач

одна конкретная функция в моем файле helpers.py, как это:

from pyramid.renderers import render_to_response 

def createBlog(): 
    ## lots of code here ## 
    return render_to_response('blog.mako', {'xyz':xyz}) 

А потом в других моих приложений я могу импортировать хелперы и сделать что-то вроде следующего в моих шаблонах:

${h.createBlog()} 

, который создает блог на моей странице. Но я просто удивляюсь, что это хороший способ использовать помощников для создания модульных модулей, которые я могу легко использовать в любых проектах. Или есть какие-то недостатки в этой технике, о которых я еще не думал?

Спасибо!

+0

Вы действительно внедряете ответ в свой шаблон, или вы на самом деле называете «рендер» вместо «render_to_response»? –

ответ

4

Это действительно зависит от того, сколько материала вы хотите выставить в глобальном масштабе. Очевидно, все, что вы помещаете в h, доступно во всем приложении, тогда как вы можете вернуть функцию createBlog только в представлениях, в которых вы хотите, чтобы они были. Один малоизвестный лакомый кусочек заключается в том, что если вы используете представления на основе классов, фактический экземпляр класса доступный в представлении как глобальная переменная view. Например:

class Foo(object): 
    def __init__(self, request): 
     self.request = request 

    def createBlog(self): 
     return render('blog.mako'. {}) 

    @view_config(...) 
    def myview(self): 
     return {} 

Теперь в шаблоне вы можете вызвать визуализации свой блог с помощью ${view.createBlog()}.

+0

Спасибо за информацию. Я думаю, что было бы неплохо просто вернуть функцию, пока я вхожу в представление. – sidewinder