Pyramid / Pylons Framework - мнение о том, как я использую «помощников» для выполнения определенных задач - PullRequest
2 голосов
/ 11 сентября 2011

В пирамиде я создал функцию «помощников», аналогичную функции в пилонах.

одна конкретная функция в моем файле 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()}

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

Спасибо!

1 Ответ

4 голосов
/ 12 сентября 2011

Это действительно зависит от того, сколько вещей вы хотите показать в глобальном масштабе.Очевидно, что все, что вы положили в 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()}.

...