我是 django-tables2 的重度用户,我曾想过向 django-table 添加一个通用扩展:我希望允许用户能够将所有表数据导出到 excel(使用 xlwt)或 csv单击位于桌子附近某处的按钮。
现在,我以非通用方式实现了这一点,这意味着我在模板中包含了一个 POST 表单和一个按钮,并添加了一个检查以查看是否单击了填充表格的视图。如果单击该按钮,则返回 xls 而不是普通模板。此外,我实现了一个通用函数,它获取一个 django-table2 表(任何表)并将其转换为 xlwt 表(以便将其放入工作簿)。
这工作正常,但由于我将在我的所有表格中使用此按钮,我不想将导出表单和按钮添加到我的所有包含表格的 html 模板中。此外,我不想将 POST 检查添加到我的所有视图中!这绝对不是 DRY :(
理想情况下,我希望有一个类,假设它是 ExportTable,它将扩展 django-tables2 的 Table 类并且可以用作替代品 - 当我使用 ExportTable 作为基类创建我的表时,然后按钮和该视图将具有导出表所需的组件。据我所知,这是不可能的:(
有人可以向我建议我应该以哪种方式扩展 django-tables2 以便能够以最干燥的方式添加“导出”功能?这意味着我只能在我的模板中使用 {% render_table table %} 标记(或它的扩展),而无需在我的视图中添加检查以查看用户是否单击了导出按钮(以及当然不需要添加额外的视图和 url 路由来处理它)。通用类视图是要走的路吗?
我会接受最干燥和最完整的(我想有一些带有评论的源代码)回答:)