Flask-Admin 链接回到主站点

Don*_*the 3 html flask

有什么方法可以修改flask-admin管理顶部面板上的主页按钮url链接,以便我重定向回主站点?

我可以在 custom.html 页面中添加一个链接,例如:

{% extends 'admin/master.html' %}
{% block body %}
    <a href="{{ url_for('main.home') }}">Home</a>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

但这隐藏在自定义页面中。我更喜欢管理员之外的顶栏链接。

pjc*_*ham 6

最简单的方法是添加一个菜单链接并单独保留管理主页(您可能希望将来添加仪表板或类似的东西):

from flask_admin.menu import MenuLink

# Create admin
admin = Admin(app, name='Admin', url='/')
admin.add_view(ImageView(model=Image, session=db.session, category='Database', name='Images'))
# Add custom link to public website home page
admin.add_link(MenuLink(name='Public Website', category='', url=url_for('main.home')))
Run Code Online (Sandbox Code Playgroud)

注意,url_for需要在 Flask 应用程序上下文中调用。例如,如果使用 Flask 应用程序工厂模式,这将类似于以下内容:

def create_app(config):

    app = App('app')

    #  setup config

    #  setup blueprints 

    #  setup Flask-Admin

    from app.admin import create_admin
    from app.admin.configure import configure_admin
    with app.app_context():
        admin = create_admin(app=app)
        configure_admin(app, admin)

    #  more stuff

   return app
Run Code Online (Sandbox Code Playgroud)

__init__.py 在 app.admin 模块中

def create_admin(app=None):
    return Admin(app, template_mode='bootstrap3')
Run Code Online (Sandbox Code Playgroud)

configure.py 在 app.admin 模块中

def configure_admin(app, admin):

    # setup views

    # add link to home page

    admin.add_link(MenuLink(name='Public Website', category='', url=url_for('home.HomeView:index')))
Run Code Online (Sandbox Code Playgroud)

  • `MenuLink` 现在导入为 `fromflask_admin.menu import MenuLink` (4认同)
  • 我需要使用`with app.test_request_context(): admin.add_link(MenuLink(name='Public Website'category='', url=url_for('index')))`来让它工作 (2认同)