如何在 Django-tables2 中子类化 Column() 的示例
Example of how to Subclass Column() in Django-tables2
谁能给我指出一个如何在 django-tables2 中子类化基础 Column() 的示例。默认情况下,django-tables2 base Column() attrs 支持 'th'、'td'、'cell' 和 'a',详见 documentation,这也说明这可以是
extended by subclasses to allow arbitrary HTML attributes to be added
to the output.
我想尝试做的是添加一个 'ul' 属性(以及随后的 'li' 属性),这样我就可以渲染单元格中的下拉菜单。我的想法是在 table 的每一行上都有一个选项按钮,通过 [=25] 为用户提供 'delete'、'copy'、'archive' 等各种选项=] 或 js 下拉菜单。
django-tables2 附带了一些自定义列,您可以在这里查看它们的实现:
https://github.com/jieter/django-tables2/tree/master/django_tables2/columns
JSONColumn
可能是一个很好的例子:
class JSONColumn(BaseLinkColumn):
def __init__(self, json_dumps_kwargs=None, **kwargs):
self.json_dumps_kwargs = (
json_dumps_kwargs if json_dumps_kwargs is not None else {"indent": 2}
)
super(JSONColumn, self).__init__(**kwargs)
def render(self, record, value):
return format_html(
"<pre {}>{}</pre>",
AttributeDict(self.attrs.get("pre", {})).as_html(),
json.dumps(value, **self.json_dumps_kwargs),
)
该实现向列构造函数添加了一个参数,允许程序员更改传递给 json.dumps()
的参数。在它的 render()
方法中,它从 attrs
-dict 中提取 <pre>
-tag 的属性。这使用户能够执行
class MyTable(tables.Table):
data = tables.JSONColumn(attrs={"pre": {"class": "json-data"}})
它将用于呈现这样的列:
<pre class="json-data">{
"key": "value"
}</pre>
另请注意,如果您创建的列不是直接查看数据,you might want to set empty_values=()
谁能给我指出一个如何在 django-tables2 中子类化基础 Column() 的示例。默认情况下,django-tables2 base Column() attrs 支持 'th'、'td'、'cell' 和 'a',详见 documentation,这也说明这可以是
extended by subclasses to allow arbitrary HTML attributes to be added to the output.
我想尝试做的是添加一个 'ul' 属性(以及随后的 'li' 属性),这样我就可以渲染单元格中的下拉菜单。我的想法是在 table 的每一行上都有一个选项按钮,通过 [=25] 为用户提供 'delete'、'copy'、'archive' 等各种选项=] 或 js 下拉菜单。
django-tables2 附带了一些自定义列,您可以在这里查看它们的实现:
https://github.com/jieter/django-tables2/tree/master/django_tables2/columns
JSONColumn
可能是一个很好的例子:
class JSONColumn(BaseLinkColumn):
def __init__(self, json_dumps_kwargs=None, **kwargs):
self.json_dumps_kwargs = (
json_dumps_kwargs if json_dumps_kwargs is not None else {"indent": 2}
)
super(JSONColumn, self).__init__(**kwargs)
def render(self, record, value):
return format_html(
"<pre {}>{}</pre>",
AttributeDict(self.attrs.get("pre", {})).as_html(),
json.dumps(value, **self.json_dumps_kwargs),
)
该实现向列构造函数添加了一个参数,允许程序员更改传递给 json.dumps()
的参数。在它的 render()
方法中,它从 attrs
-dict 中提取 <pre>
-tag 的属性。这使用户能够执行
class MyTable(tables.Table):
data = tables.JSONColumn(attrs={"pre": {"class": "json-data"}})
它将用于呈现这样的列:
<pre class="json-data">{
"key": "value"
}</pre>
另请注意,如果您创建的列不是直接查看数据,you might want to set empty_values=()