欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > flask-admin 框架下添加menu_links 菜单

flask-admin 框架下添加menu_links 菜单

2025/3/29 20:57:36 来源:https://blog.csdn.net/hnmpf/article/details/144788257  浏览:    关键词:flask-admin 框架下添加menu_links 菜单

背景:

在使用flask-admin框架默认VIEW的UI进行开发时,我们更多时候需要将一些菜单排布到左边一些在右边,比如登录/登出 按钮往往在右边,其实框架提供能类似的能力。

制作:

1、看页面效果

2、查边了资料都没有找到有关这个需求的实现,最后看源码发现了思路,源码如下

 

3、通过阅读源码发现框架本身提供了类似能力,那怎么才能赋值到 menu_links 下,我们直接代码,首先继承MenuLink 实现一个连接

from flask_admin.menu import MenuLink
from flask import redirect, url_for
from flask_login import current_userclass LogoutLink(MenuLink):def is_accessible(self):return current_user.is_authenticateddef inaccessible_callback(self, name, **kwargs):return redirect(url_for('admin/login'))

4、注册上面的连接

    def init_app(app):admin = Admin(app,  name=u"AI阅读管理系统",index_view=MyAdminIndexView(name="首页"),template_mode='bootstrap3')略admin.add_link(LogoutLink(name='退出', url='/admin/logout'))return admin

5、通过上面的实现我们发现自定义的菜单会顺序的出现在左侧,也就是 main_menu 菜单列表下,此刻 admin.add_link(LoginLink(name='登录', url='/admin/logout'))等同与admin.add_menu_item(LogoutLink(name='登录', url='/admin/logout'))

6、怎么办呢?继续看源码,通过分析发现只要让该自定义菜单的category 为false 即可,也就是变成全局变量即可。

7、继续阅读MenuLink 的源码查找出路,哈哈原来默认是有权限的,那好办

8、修改上面自定义的 LogoutLink 类,效果如下:


class LogoutLink(MenuLink):def is_category(self):return Falsedef is_accessible(self):return current_user.is_authenticateddef inaccessible_callback(self, name, **kwargs):return redirect(url_for('admin/login'))

9、至此,大工搞成 

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词