Pyramid/Pylons Framework - 关于我如何使用“helpers”的意见完成某些任务

发布于 2024-12-03 21:46:32 字数 441 浏览 4 评论 0原文

在金字塔中,我创建了一个类似于塔中的“助手”功能。

我的 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()}

这会在我的页面上创建一个博客。但我只是想知道这是使用助手创建“模块”样式插件的好方法,我可以在项目中的任何地方轻松使用它。或者这个技术有什么我还没有真正想到的缺陷吗?

谢谢!

In pyramid, I have created a 'helpers' functionality similar to that in pylons.

one particular function in my helpers.py file is like this:

from pyramid.renderers import render_to_response

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

And then in my other applications I can import helpers and do something like the following in my templates:

${h.createBlog()}

which creates a blog on my page. But I am just wondering is this a good way of using helpers to create "module" style plugins that I can easily use anywhere in my projects. Or are there any flaws to this technique which I haven't really thought of yet?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤蝉 2024-12-10 21:46:32

这实际上取决于您想要在全球范围内公开多少内容。显然,您放入 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()} 调用渲染您的博客。

It really depends on how much stuff you want to expose globally. Obviously anything you put into h is available throughout the application, whereas you could return the createBlog function just in the views you want it to be in. One little-known tidbit is that if you use class-based views, the actual class instance is available in the view as the view global variable. For example:

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

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

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

Now in your template you can call render your blog using ${view.createBlog()}.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文