当前位置:实例文章 » Python实例» [文章]【Python成长之路】基于Flask-admin库,编写个人工作平台代码 -- 进阶版

【Python成长之路】基于Flask-admin库,编写个人工作平台代码 -- 进阶版

发布人:shili8 发布时间:2023-03-14 18:49 阅读次数:20

1、基础功能版

之前已经写过Flask_Admin库的基础应用, 《【Python成长之路】基于Flask-admin库,编写个人工作平台代码详述》。但是在后续工作使用中,发现有新的需求功能需要添加,因此有了此篇的进阶版。

进阶版主要功能如下:

(1)支持快速查看详情功能

(2)支持数据导出功能

(3)支持自定义功能实现

(4)支持搜索结果总数显示

(5)表格内容自适应

2、快速查看详情功能

为了快速查看某条数据的所有信息 ,可以在视图实例代码中,可以打开can_view_details形状,如

class WorkAdmin(CustomView): 
    XXXX 
    # 以下是新增代码    
    can_view_details = True

效果如下:

在每条数据前面有个小眼睛,点击后即可查看详情。

image-20230312095153474

image-20230312095130107

其他常用视图实例开关可参考:

/caseinfo/link/37bec8a918574437a405735ccfd7813a

3、数据导出功能

为了实现数据展出功能,有两处代码需要修改。

image-20230312100639499

(1)界面添加导出按钮,修改文件为templates\list.html

# 以下是新增代码
{% if admin_view.can_export %}
    <div class="btn-menu">
            <a href="{{ get_url('.export', export_type=admin_view.export_types[0], **request.args) }}"
               title="{{ _gettext('Export') }}" class="btn btn-primary pull-right">{{ _gettext('Export') }}</a>
    </div>
{% endif %}

(2)在视图代码中打开 导出开关

class WorkAdmin(CustomView): 
    XXXX 
    # 以下是新增代码    
    can_export = True

最后数据会以csv文件格式进行导出,但是中文会有乱码问题,当前暂未解决。当然,也支持各类条件过滤后的结果导出。

4、自定义功能实现

当前框架默认支持的功能只有增删改查等功能,比如界面添加对应数据的后处理,则需要自定义功能开发了。大致效果如下:

image-20230312102328935

修改代码如下:

class WorkAdmin(CustomView): 
    xxxx 
    # 以下是新增代码    
    from flask_admin.actions import action    
    @action('myaction', 'MyAction', '自定义功能的描述')    
    def action_approve(self, ids):       
        print(ids)        
        # 后续即基于id值可以在数据库中拿到完整的数据内容,从而进行数据二次处理

目前了解到 ,自定义action只能传id值,其他参数不支持。拿 到id后再到 数据库里进行查询,就可以拿到 完整的数据信息了。

5、搜索结果总数显示

由于界面显示是由templates\list.html 定义的,因此当添加搜索结果时,自然需要修改list.html文件

效果如下:

image-20230312094637455

修改内容如下:

<h2 id="brand">{{ admin_view.name|capitalize }} 列表</h2>
# 以下是新增代码
<h4>{{ _gettext('当前总数为: ') }}{% if count %} {{ count }}{% endif %}</h4>

当前可以对h4标签进行添加sytle,从而对显示文字颜色、大小等修改,具体css代码可自行百度。

6、优化表格展示

当前框架对超过一定长度的单元格内容会自动设置换行,但是如果表格标题太多,比如10+,其中又有多个列是超长文件,就会有滑动条生成。虽然也能查看,但是对用户体验不佳,比如我自己更愿意所有数据在一页内呈现。

image-20230312102855923

那么为了实现单页内呈现的功能,需要对list.html进行。

主要是对表格内容(model_menu_bar)里对源框架的list.html重定义,设置td标签的最大宽度为100px,并自动换行和英文单词强行切分

{% block model_menu_bar %}
# 以下是新增代码 
    <style>        
        td {            
        max-width:100px;            
        word-wrap:break-word;            
        word-break:break-all;        
        } 
    </style>
{% endblock %}

相关标签:

免责声明

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱290110527@qq.com删除。

其他信息

其他资源

Top