django xadmin 插件(3) 列表视图新增自定义按钮
时间: 2023-10-10 14:15:47 浏览: 55
要在 Django Xadmin 的列表视图中添加自定义按钮,可以使用 Xadmin 的 `ButtonPlugin` 插件。
以下是添加自定义按钮的步骤:
1. 创建一个 `ButtonPlugin` 子类,例如:
```python
from xadmin.plugins.utils import get_context_dict
from xadmin.views import BaseAdminPlugin, ListAdminView
class MyButtonPlugin(BaseAdminPlugin):
# 定义按钮的图标和名称
my_btn_icon = 'fa fa-plus'
my_btn_name = 'My Button'
# 在页面右上角添加按钮
def get_context(self, __):
context = get_context_dict(__)
context['my_button_html'] = self.get_my_button_html()
return context
# 构建按钮的 HTML
def get_my_button_html(self):
return '<a class="btn btn-primary" href="#">' \
'<i class="{}"></i> {}</a>'.format(self.my_btn_icon, self.my_btn_name)
```
2. 将 `ButtonPlugin` 子类添加到 `ListAdminView` 中:
```python
class MyListAdminView(ListAdminView):
# ...
# 注册自定义按钮插件
plugin_my_button = MyButtonPlugin
# ...
```
3. 在模板中添加按钮的 HTML:
```html
{% extends "xadmin/base_site.html" %}
{% load static %}
{% block content %}
{{ block.super }}
<div class="row-fluid">
<div class="span12">
<div class="widget-box">
<div class="widget-title">
<h5>{{ title }} List</h5>
<div class="buttons">
{{ my_button_html }} <!-- 添加自定义按钮的 HTML -->
</div>
</div>
<div class="widget-content nopadding">
<!-- ... -->
</div>
</div>
</div>
</div>
{% endblock %}
```
这样,在列表视图页面的右上角就会出现一个名为 My Button 的自定义按钮。