2011-09-11 60 views
2

在金字塔中,我創建了一個類似於塔架中的「助手」功能。金字塔/塔架框架 - 關於如何使用「助手」完成某些任務的意見

在我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

你是真的在你的模板中嵌入一個Response,還是你實際調用「render」而不是「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