如何创建Python金字塔视图类,而不需要为每个方法指定“name”

2024-06-16 14:31:08 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python Python Pyramid项目中,我通过add\u handler添加了几个视图类:

config.add_handler('export_index', '/export', handler=ExportViews, action='index')

class ExportViews(ConfigViewBase):
    @action(request_method='POST', name='index',
            request_param='ftp_export.form.submitted')
    @action(request_method='POST', name='index', xhr=True, renderer='json',
            request_param='ftp_export.form.submitted')
    def ftp_export(self):
         #process form
         return {}

    @action(request_method='GET')
    def index(self):
        return {}

有没有可能做到同样的事情:

^{pr2}$

所以当browser获取页面时调用了u call_uu,在同一页面上发布表单时应该调用ftp_uexport。现在我得到page not found error

谢谢。在


Tags: nameformaddindexparamrequestdefftp
1条回答
网友
1楼 · 发布于 2024-06-16 14:31:08

你可以用遍历来实现。穿越岩石:)

class Root(object):
    def  __getitem__(self, name):
        if name == "export":
            return ExportSomething(self)
        if name == "export_something_else":
            return ExportSomethingElse(self)



class ExportSomething(object):

    implements(IViewable, IExportable)

    def view(self, request):
        return "Hi"

    def export(self, request):
        return "something else"

@view_config(context=IViewable, request_method="GET")
def view_viewable(conext, request):
    return context.view(request)

@view_config(context=IExportable, request_method="POST")
def export_exportable(conext, request):
    return context.export(request)

然后您可以实现一组ExportThisExportThat类,使它们实现IViewable和{}接口,使它们从Root.__getitem__返回,一切都神奇地工作。或者,如果不需要多个导出器,可以省略接口并将视图直接绑定到ExportSomething类。或者您可以在getitem中实例化ExportSomething的不同实例,并使其成为。。。我不知道,查看/导出不同的文件/报告。在

相关问题 更多 >